| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: UTF-Konvertierung (1063 / mal gelesen)
|
-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 |
Niggemann Mitglied
 
 Beiträge: 168 Registriert: 31.10.2003 Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010
|
erstellt am: 13. Feb. 2025 17:15 <-- editieren / zitieren --> Unities abgeben:          Nur für -ikarus-
Hallo zusammen, gibt es auch einen Code wie untem im Beitrag der Texte die mit der Codepage 850, aus DOS Zeiten, erstellt wurden in UTF-8 zu konvertieren? Meine Kentnisse mit vlax.... sind leider sehr bescheiden. Gruß Niggemann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22482 Registriert: 03.06.2002 Alles
|
erstellt am: 13. Feb. 2025 22:59 <-- editieren / zitieren --> Unities abgeben:          Nur für -ikarus-
Wenn du den DOS-850 codec installiert hast, dann sollte das darüber funktionieren HKEY_CLASSES_ROOT\MIME\Database\ Würde mich auch interessieren, bei mir ist dieser aber nicht installiert, auch nicht der ÄHNLICHE US 473. Wie ich andere installieren und woher ich die beziehen kann: Da mir 30min Recherche nicht ausreichte, bin ich raus - lese aber weiter mit, falls du erfolgreich warst.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Niggemann Mitglied
 
 Beiträge: 168 Registriert: 31.10.2003 Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010
|
erstellt am: 14. Feb. 2025 13:32 <-- editieren / zitieren --> Unities abgeben:          Nur für -ikarus-
|
Niggemann Mitglied
 
 Beiträge: 168 Registriert: 31.10.2003 Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010
|
erstellt am: 26. Mrz. 2025 14:34 <-- editieren / zitieren --> Unities abgeben:          Nur für -ikarus-
Nach langen vergeblichen suchen hab ich mich entschlossen die Texte zu konvertieren und dann in UTF-8 zu konvertieren. Hat den Vorteil das ich auf anderen Rechnern mein Lisp benutzen kann ohne etwas nach zu instalieren und kann damit auch die Codepage 437 und 850 bearbeiten. Gruß Niggemann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |