-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 29. Nov. 2016 15:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hab hier schon so viel Gutes erfahren und hab gedacht vielleicht kann ich auch jemanden etwas Gutes tun. Mit dem folgenden Code kann eine z.B. XML UTF-16 in eine UTF-8 oder ISO-8859-1 umcodiert werden. Vielleicht geht das alles eleganter aber ich bin in meinen Möglichkeiten geblieben. Für Tipps/Verbesserungen bin ich immer offen. Code:
(defun vk_WriteTextStream (Stream FileName Charset / ADODBStreamObj Result) (if (setq ADODBStreamObj (vlax-create-object "ADODB.Stream")) (progn (setq Result (vl-catch-all-apply (function (lambda () (vlax-put ADODBStreamObj "Charset" Charset) (vlax-invoke ADODBStreamObj "Open") (vlax-invoke-method ADODBStreamObj "WriteText" Stream 0) (vlax-invoke ADODBStreamObj "SaveToFile" FileName 2) ) ) ) ) (vlax-release-object ADODBStreamObj) (if (not (vl-catch-all-error-p Result)) FileName ) ) ) ) ;;;(vk_WriteTextStream "??????? ??????? ?? ??????" "C:\\Temp\\test.txt" "utf-8") (defun vk_ReadTextStream (FileName Charset / ADODBStreamObj Result) (if (and (setq FileName (findfile FileName)) (setq ADODBStreamObj (vlax-create-object "ADODB.Stream")) ) (progn (setq Result (vl-catch-all-apply (function (lambda () (vlax-put ADODBStreamObj "Charset" Charset) (vlax-invoke ADODBStreamObj "Open") (vlax-invoke ADODBStreamObj "LoadFromFile" FileName) (vlax-invoke-method ADODBStreamObj "ReadText" -1) ) ) ) ) (vlax-release-object ADODBStreamObj) (if (not (vl-catch-all-error-p Result)) Result ) ) ) ) ;;;(vk_ReadTextStream "C:\\Temp\\test.txt" "utf-8")(defun UTF_Convert (FileName1 Codek1 FileName2 Codek2 / SuchenErsetzen StringOrg StringNew f Inhalt) (setq Codek1 (strcase Codek1) Codek2 (strcase Codek2) ) (if (= Codek1 "ANSI") (progn (setq f (open FileName1 "r")) (setq StringOrg (read-line f)) (while (setq Inhalt (read-line f )) (princ Inhalt ) (setq StringOrg (strcat StringOrg "\n" Inhalt )) ) (close f) ) (setq StringOrg (vk_ReadTextStream FileName1 Codek1 )) ) (if (or (vl-string-search Codek1 StringOrg )(vl-string-search "WINDOWS-1252" StringOrg )(vl-string-search "windows-1252" StringOrg )) (progn (cond ((vl-string-search "WINDOWS-1252" StringOrg ) (setq StringNew (vl-string-subst Codek2 "WINDOWS-1252" StringOrg ))) ((vl-string-search "windows-1252" StringOrg ) (setq StringNew (vl-string-subst Codek2 "windows-1252" StringOrg ))) ((= Codek2 "ANSI" ) (setq StringNew (vl-string-subst "WINDOWS-1252" Codek1 StringOrg ))) ((vl-string-search Codek1 StringOrg ) (setq StringNew (vl-string-subst Codek2 Codek1 StringOrg ))) (t nil) ) ) (progn (princ "\n Codek nicht in datei gefunden! " ) (setq StringNew StringOrg ) ) ) (if (= Codek2 "ANSI") (progn (setq f (open FileName2 "w")) (write-line StringNew f) (close f) ) (vk_WriteTextStream StringNew FileName2 Codek2 ) ) ) ;;;;(UTF_Convert "C:\\Temp\\AllElements.xml" "utf-16" "C:\\Temp\\AllElementsNew.xml" "utf-8" ) (defun C:UTF-Conv (/ FileName1 Codek1 FileName2 Codek2 ) (setq FileName1 (getfiled "Zu konvertierende Datei wählen" (getvar "dwgprefix") "" 8 )) (setq Codek1 (getstring "\nGeben Sie den aktuellen Codak ein [UTF-16/UTF-16LE/UTF-16BE/UTF-8/ANSI/ISO-8859-1]: ")) (setq FileName2 (getfiled "Zieldatei angeben" FileName1 "" 1 )) (setq Codek2 (getstring "\nGeben Sie den gewünschten Codak ein [UTF-16/UTF-16LE/UTF-16BE/UTF-8/ANSI/ISO-8859-1]: ")) (UTF_Convert FileName1 Codek1 FileName2 Codek2) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |