FPC3 AnsiToUtf8 geht nicht mehr?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

FPC3 AnsiToUtf8 geht nicht mehr?

Beitrag von MmVisual »

Hallo,

Ich habe Text-Dateien im ANSI Format und möchte diese in UTF8 wandeln. Irgendwie scheint das am FPC 3 nicht mehr so richtig zu wollen.

Quelldatei (HEX / ASCII):
3b 20 53 74 fc 63 6b 6c 69 73 74 65 = "; Stückliste"
der ü Buchstabe ist hier ein "FC", also Standard ANSI Format mit den lokalen deutschen Computer Einstellungen.

ohne AnsiToUtf8() ist das "ü" ein "?". Nach AnsiToUtf8() ist das "?" ein "�" Zeichen.

Weiß jemand wie ich das neu richtig mache? - So dass es mit allen Sprachen weltweit korrekt funktioniert?

Codeauszug:

Code: Alles auswählen

 
  sl := TStringList.Create;
  sl.LoadFromFile(oDlgCsv.FileName);
  s := AnsiToUtf8(sl[0]);
  s := Trim(s);
 


Dankeschön.

Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: FPC3 AnsiToUtf8 geht nicht mehr?

Beitrag von Michl »

Code: Alles auswählen

uses ..., LazUTF8;
...
  s := WinCPToUTF8(SL[0]);   

Sollte gehen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: FPC3 AnsiToUtf8 geht nicht mehr?

Beitrag von MmVisual »

Vielen Dank, sieht schon viel besser aus. :D
Alles geht wieder.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Bitschubser
Beiträge: 61
Registriert: Mo 27. Aug 2012, 15:43

Re: FPC3 AnsiToUtf8 geht nicht mehr?

Beitrag von Bitschubser »

Vielleicht noch als Hinweis:
"ANSI"-Dateien enthalten eigentlich keine Umlaute.
Wenn das importieren einer "ANSI"-Datei mit "Umlauten" irgendwo/igendwann mal funktioniert (hat), dann liegt/lag das daran, dass irgendeine der beteiligten Routinen für die Datei eine Codepage annimmt und diese (zufällig) der Codepage entspricht mit der die Datei erstellt wurde.
Mit der Verwendung von WinCP sollte das ganze zumindest immer dann funktionieren wenn die Datei auf dem gleichen System erstellt wurde.
Wenn du aber z.B. die Datei jemandem zur Verfügung stellst auf dessen Windows eine andere Codepage Standard ist oder gar ein anderes Betriebssystem läuft musst du auch die Codepage-Information mit der Datei mitliefern.
Oder besser gleich eine UTF-Datei erstellen und importieren – dann kannst du auch in einer Datei z.B. Umlaute, Russisch, Griechisch und Chinesisch mischen. Das geht nämlich mit Codepages nicht.

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: FPC3 AnsiToUtf8 geht nicht mehr?

Beitrag von MmVisual »

In der Regel wird die Datei immer auf dem gleichen Rechner von einem CAD Programm erstellt wie sie anschließend von meinem Programm importiert wird. Meine Software läuft in vielen Ländern, unter anderem auch Kyrillisch. Nun ja die werden sich schon melden wenn noch was anderes nicht richtig tut :wink:
Bei Freeware muss ja zum Glück nicht alles auf Anhieb funktionieren. Und auf den Export des CAD Programms kann ich leider nicht einwirken.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Bitschubser
Beiträge: 61
Registriert: Mo 27. Aug 2012, 15:43

Re: FPC3 AnsiToUtf8 geht nicht mehr?

Beitrag von Bitschubser »

MmVisual hat geschrieben:In der Regel wird die Datei immer auf dem gleichen Rechner von einem CAD Programm erstellt
[...]


Naja, dann hast du ja eh kenen Einfluss auf das Format und das Verwenden der System (Windows-) Codepage sollte auch korrekt funktionieren.

Meine Software läuft in vielen Ländern, unter anderem auch Kyrillisch. Nun ja die werden sich schon melden wenn noch was anderes nicht richtig tut :wink:
Bei Freeware muss ja zum Glück nicht alles auf Anhieb funktionieren. Und auf den Export des CAD Programms kann ich leider nicht einwirken.

Ich kann mich noch gut an den Krampf erinnern, wenn man Russisch mit Codepage unter Delphi 5 auf einem deutschen Wimdows einfach nur testen wollte...

Antworten