charset/codepage

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

charset/codepage

Beitragvon Rudolf » Mo, 05. Sep 2016 8:22

Hallo,
wieder mal ein codepage Problem, bekomme in einem XML die Sonderzeichen nicht richtig decodiert. Ich verwende XB2NET, hier kann ich mit xbCPConvert() von einer Codepage in eine beliebig andere umwandeln. Im Header steht <?xml version="1.0" encoding="UTF-8"?>, also müsste die Basis UTF sein

Code: Alles auswählen
DC_LangSet(101)
SET CHARSET TO ANSI
aadd(aChar,{"Ö","Ö"})
aadd(aChar,{"ä","ä"})
aadd(aChar,{"ö","ö"})
aadd(aChar,{"ü","ü"})
aadd(aChar,{"ß","ß"})
for x := 1 to len(aChar)
     //28592     iso-8859-2     ISO 8859-2 Central European; Central European (ISO)
     //1250      windows-1250   ANSI Central European; Central European (Windows)
     //65001     UTF-8

     cOut += aChar[x,1] + "|" + aChar[x,2] + "|" + xbCPConvert(aChar[x,2],65001, 1250 )+ CRLF // in ANSI
     cOut += aChar[x,1] + "|" + aChar[x,2] + "|" + xbCPConvert(aChar[x,2],65001, 28592  )+ CRLF //
     cOut += aChar[x,1] + "|" + aChar[x,2] + "|" + xbCPConvert(aChar[x,2],1250 ,65001 )+ CRLF //
     cOut += aChar[x,1] + "|" + aChar[x,2] + "|" + xbCPConvert(aChar[x,2],28592,65001   )+ CRLF //

next x
memowrit("uml.txt",cOut)
dc_guimemoedit(cout)


Ergebnis:
Ö|Ö|
Ö|Ö|
Ö|Ö|Ă–
Ö|Ö|Ö
---------------
ä|ä|
ä|ä|
ä|ä|ä
ä|ä|ä
---------------
ö|ö|
ö|ö|
ö|ö|ö
ö|ö|Ä‚Å›
---------------
ü|ü|
ü|ü|
ü|ü|ĂĽ
ü|ü|Ăź
---------------
ß|ß|
ß|ß|
ß|ß|Ăź
ß|ß|ß
---------------

Wie komme ich zur richtigen Konvertierung ?
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: charset/codepage

Beitragvon brandelh » Mo, 05. Sep 2016 8:32

Ich würde das mit meiner Funktion einlesen (memoread() könnte schon konvertieren) und mit Pablos Funktionen nach Ansi umsetzen.
Und zwar die ganze Datei auf einen Schlag !
UTF-8 ist ja zeichenabhängig 1:1, 2:1, 3:1 bis 4:1

file2str() aus Tools oder hier :arrow: viewtopic.php?f=16&t=1811&hilit=file2str

UTF8 :arrow: viewtopic.php?f=20&t=9163&hilit=utf8#p103055
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: charset/codepage

Beitragvon Wolfgang Ciriack » Mo, 05. Sep 2016 10:33

Ich setze alles um mit
Code: Alles auswählen
ConvToOemCp(cUtf8toAnsi(cxml))

wobei cUtf8toAnsi() aus ot4xb ist.
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2205
Registriert: Sa, 24. Sep 2005 8:37
Wohnort: Berlin

Re: charset/codepage

Beitragvon brandelh » Mo, 05. Sep 2016 10:42

das kommt natürlich drauf an ob die EXE in Ansi oder OEM läuft. Ich meine aber Pablo hätte eine eigene OEM Funktion ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: charset/codepage

Beitragvon Rudolf » Mo, 05. Sep 2016 11:14

Hallo,
ich hoffe doch dass alle das gleiche (richtige) Ergebnis liefern ;-)
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: charset/codepage

Beitragvon brandelh » Mo, 05. Sep 2016 12:08

Pablo hat 4 Funktionen in der OT4XB,

2 erzeugen Ansi oder Oem Strings aus Utf8:

cUtf8ToAnsi(cUtf8) -> cAnsi
cUtf8ToOem(cUtf8) -> cOem


die anderen erzeugen aus Oem oder Ansi Strings Utf8 Strings:
cAnsiToUtf8( cAnsi ) -> cUtf8
cOemToUtf8(cOem) -> cutf8


man muss nur die richtige Funktion und Richtung wählen, dazu kann man abfragen wie die EXE eingestellt ist, im obigen Quellcode war ja aber von ANSI die Rede.

Wichtig ist, dass der UTF8 String nicht mehr automatisch oder manuell geändert wird.
Ich bin mir nicht sicher, dass dort nur eindeutige Zeichen verwendet werden.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim


Zurück zu Allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast