Stringkonvertierung DOS-Latin-1 --> UTF8

Anfängerfragen zum Programmieren mit PureBasic.
frankmannb
Beiträge: 47
Registriert: 21.02.2010 13:02

Stringkonvertierung DOS-Latin-1 --> UTF8

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Stringkonvertierung DOS-Latin-1 --> UTF8

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: Stringkonvertierung DOS-Latin-1 --> UTF8

Beitrag von helpy »

... oder selbst schreiben mit Hilfe der "Codepage 850 Mapping bei Unicode.org"
Windows 10
PB Last Final / (Sometimes testing Beta versions)
frankmannb
Beiträge: 47
Registriert: 21.02.2010 13:02

Re: Stringkonvertierung DOS-Latin-1 --> UTF8

Beitrag von frankmannb »

Hallo Thomas,

Danke :D 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
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: Stringkonvertierung DOS-Latin-1 --> UTF8

Beitrag 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.
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Antworten