Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Utf8ToAnsi funktioniert nicht mit Umlauten (https://www.delphipraxis.net/182403-utf8toansi-funktioniert-nicht-mit-umlauten.html)

juergen 21. Okt 2014 22:09

AW: Utf8ToAnsi funktioniert nicht mit Umlauten
 
Zitat:

Zitat von Sir Rufo (Beitrag 1276902)
[OH](Wer setzt denn solche
Delphi-Quellcode:
TEncoding.ANSI
Gerüchte in die Welt?)

:-D:-D:-D
Siehe dein Edit :oops:

Sir Rufo 21. Okt 2014 22:13

AW: Utf8ToAnsi funktioniert nicht mit Umlauten
 
Zitat:

Zitat von juergen (Beitrag 1276904)
Zitat:

Zitat von Sir Rufo (Beitrag 1276902)
[OH](Wer setzt denn solche
Delphi-Quellcode:
TEncoding.ANSI
Gerüchte in die Welt?)

:-D:-D:-D
Siehe dein Edit :oops:

Mist, aufgefallen :stupid:

Uwe Raabe 21. Okt 2014 23:26

AW: Utf8ToAnsi funktioniert nicht mit Umlauten
 
Zitat:

Zitat von Sir Rufo (Beitrag 1276894)
Genau das ist aber sein Problem
Delphi-Quellcode:
Utf8ToAnsi(sl_Input_UTF_8_File.Strings[i])
.
Da wird eine Unicode-Zeichenfolge als UTF8 interpretiert und als Ansi ausgegeben. Das geht halt in die Hose :)

Der Name der Funktion ist (aus Kompatibilitätsgründen) irreführend und es wird dort ein UnicodeString (= string) zurückgegeben und kein AnsiString. Es erfolgt auch keine Umwandlung in ANSI, sondern der Fehler tritt dadurch auf, daß als Parameter ein RawByteString in UTF8-Kodierung erwartet wird, aber eben Unicode ankommt. Deswegen muss man bei RawByteString aufpassen, daß der Inhalt auch passt.

Nur so nebenbei: Für die Umwandlung von UTF8 nach Ansi bedarf es eigentlich keiner speziellen Routine. Allein durch die richtige Deklaration der Variablen erledigt der Compiler bei simpler Zuweisung den Rest (mit entsprechender Warnung).

Delphi-Quellcode:
var
  S: string;
  A: UTF8String;
  B: AnsiString;
...
  S := 'Häufiges Hüpfen verödet unverhältnismäßig den Rasen';
  A := S;
  B := A;
  Assert(B = S, 'Falsche CodePage!');


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz