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 (775 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

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)2023 CAD.de | Impressum | Datenschutz