![]() |
Delphi-Version: XE8
UTF-8 nach ASCII (die 1000ste)
Hallo,
ich bin immer noch mit der Portierung einer Software von Delphi 2007 nach XE8 beschäftigt. Jetzt habe ich Probleme mit der Kodierung. In der Anwendung werden viele ASCII-Dateien geschrieben (mit write bzw. writeln). Der Quellstring kommt aus einer Sqlite-Datenbank in UTF-8, welcher in Delphi 2007 mit Utf8ToAnsi und dann mit CharToOemBuff in die benötigte Kodierung umgewandelt wird. In XE8 wollte ich OemToCharA statt CharToOemBuff verwenden, was leider nicht funktioniert. Hat jemand einen Hinweis, wie ich das Problem lösen könnte, ohne meine Anwendung komplett über den Haufen zu werfen? |
AW: UTF-8 nach ASCII (die 1000ste)
Übergibst du OemToCharA denn auch einen AnsiString und keinen String?
|
AW: UTF-8 nach ASCII (die 1000ste)
Delphi-Quellcode:
function OEM2Ascii(const OEMString: AnsiString): AnsiString;
begin Result := OEMString; if Result <> '' then OemToCharA(PAnsiChar(Result), PAnsiChar(Result)); end; |
AW: UTF-8 nach ASCII (die 1000ste)
Aufruf?
|
AW: UTF-8 nach ASCII (die 1000ste)
Delphi-Quellcode:
Der Rückgabewert der Methode GetFields liefert einen String.
function GetFieldByName(const FieldName: string): String;
var s: String; begin s := Utf8ToAnsi(GetFields(self.GetFieldIndex(FieldName))); if FIsAscii then s := OEM2Ascii(S); Result := s; end; |
AW: UTF-8 nach ASCII (die 1000ste)
Zitat:
Zitat:
![]() Und dann wird das Unicode nach ANSI umgewandelt und an OEM2Ascii übergeben. Was gibt GetFields für einen Typ zurück? |
AW: UTF-8 nach ASCII (die 1000ste)
Bedeutet, dass ich BšCHER (ASCII) benötige, aber entweder BÜCHER (ANSI/Unicode) oder B_CHER bekomme.
GetFields liefert einen String. |
AW: UTF-8 nach ASCII (die 1000ste)
Kannst du deine Texte nicht einer TStringList unterbringen, und mit TEncoding.ASCII als zusätzlichem Parameter abspeichern?
Grüße Mikhal |
AW: UTF-8 nach ASCII (die 1000ste)
Das wäre natürlich das einfachste, aber dafür müsste ich recht viele alte Units ändern, in denen direkt in eine Datei geschrieben wird, und der Aufwand dafür ist dann doch zu hoch.
|
AW: UTF-8 nach ASCII (die 1000ste)
Zitat:
Zugegeben es gibt in dem Bereich so viele eierlegende Wollmilchsäue, daß da der Überblick verloren gehen kann, aber ein wenig Genauigkeit könnte da nicht schaden. (das ist eher ASCIItoANSI) Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz