Seite 1 von 1
Stringkonvertierung DOS-Latin-1 --> UTF8
Verfasst: 09.11.2012 11:14
von frankmannb
Hallo Leute,
ich habe folgendes Problem. Ich möchte eine Datei einlesen die in DOS-Latin-1 geschrieben wurde. Die Datei wird eingelesen und nach Änderung wieder ausgegeben. Als Ausgabe soll aber zur weiteren Verwendung UTF8 verwendet werden. Gibt es hierzu einen Befehl bei PureBasic der mir es erlaubt einen eingelesenen String in das UTF-Format umzuwandlen?
Vielen Dank für eure Hilfe
Frank
Re: Stringkonvertierung DOS-Latin-1 --> UTF8
Verfasst: 09.11.2012 11:29
von ts-soft
Denn String kannst Du aber nur in einem Speicher halten!
Code: Alles auswählen
Procedure OEM2UTF8(String.s)
Static *mem
If OemToChar_(String, String)
*mem = AllocateMemory(StringByteLength(String, #PB_UTF8) + 1)
PokeS(*mem, String, -1, #PB_UTF8)
ProcedureReturn *mem
EndIf
EndProcedure
Wahrscheinlich willst Du aber den DOS-String lediglich in eine Datei schreiben, dafür benötigst Du nur
OemToChar_(String, String) und beim schreiben dann UTF-8 als Flag angeben (siehe Hilfe).
Gruß
Thomas
Re: Stringkonvertierung DOS-Latin-1 --> UTF8
Verfasst: 09.11.2012 11:31
von helpy
... oder selbst schreiben mit Hilfe der "
Codepage 850 Mapping bei Unicode.org"
Re: Stringkonvertierung DOS-Latin-1 --> UTF8
Verfasst: 09.11.2012 11:40
von frankmannb
Hallo Thomas,
Danke

genau das war es, was ich gesucht habe.
Schön das es euch gibt.
Bis denne und nochmals Vielen Dank
ts-soft hat geschrieben:Denn String kannst Du aber nur in einem Speicher halten!
Code: Alles auswählen
Procedure OEM2UTF8(String.s)
Static *mem
If OemToChar_(String, String)
*mem = AllocateMemory(StringByteLength(String, #PB_UTF8) + 1)
PokeS(*mem, String, -1, #PB_UTF8)
ProcedureReturn *mem
EndIf
EndProcedure
Wahrscheinlich willst Du aber den DOS-String lediglich in eine Datei schreiben, dafür benötigst Du nur
OemToChar_(String, String) und beim schreiben dann UTF-8 als Flag angeben (siehe Hilfe).
Gruß
Thomas
Re: Stringkonvertierung DOS-Latin-1 --> UTF8
Verfasst: 09.11.2012 12:26
von helpy
Was passiert, wenn auf einem PC als OEM Zeichensatz nicht die
CodePage 850 (DOS Latin-1) eingestellt ist?
Dann wird wohl OemToChar fehlerhafte Ergebnisse liefern.