Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  UTF-Konvertierung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  UTF-Konvertierung (976 / mal gelesen)
-ikarus-
Mitglied
Zeichner


Sehen Sie sich das Profil von -ikarus- an!   Senden Sie eine Private Message an -ikarus-  Schreiben Sie einen Gästebucheintrag für -ikarus-

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 167
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 13. Feb. 2025 17:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für -ikarus- 10 Unities + Antwort hilfreich

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 22433
Registriert: 03.06.2002

Alles

erstellt am: 13. Feb. 2025 22:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für -ikarus- 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 167
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 14. Feb. 2025 13:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für -ikarus- 10 Unities + Antwort hilfreich

Die Idee mit HKEY_CLASSES_ROOT\MIME\Database\ war nicht schlecht habe aber alles in der REG nur das nicht. Einzige Möglichkeit die ich noch sehe ist eine Konvertierung von oem850 auf ansi1252, gibt es hier im Forum auch einen Beitrag,
https://ww3.cad.de/foren/ubb/Forum145/HTML/002524.shtml#000001
und dann auf UTF-8 konvertieren. Dieses doppelte konvertieren wollte ich mir eigentlich ersparen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz