Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi UTF8 String auf Datei mit writeln? (https://www.delphipraxis.net/62425-utf8-string-auf-datei-mit-writeln.html)

HPW 4. Feb 2006 11:40


UTF8 String auf Datei mit writeln?
 
Was mache ich da falsch:
Delphi-Quellcode:
var
   linestr  : String;
   utfstr   : UTF8String;
   outstr   : String;
   Fin      : TextFile;
   Fout     : TextFile;

...
...

     while not Eof(Fin) do
       begin
         Readln(Fin, linestr);
         utfstr := AnsiToUTF8(linestr);
         outstr := '['+utfstr+']';
         Showmessage(outstr);
         Writeln(Fout, outstr);
       end;
...
In der Messagebox sehe ich für den String 'ABCDÄÖÜßäöü€@' dieses '[ABCDÄÖÜßäöü€@]'
aber in der Ausgabedatei ist es '[ABCDÄÖÜßäöü€@]'?

ste_ett 4. Feb 2006 11:44

Re: UTF8 String auf Datei mit writeln?
 
ShowMessage() unterstützt kein UTF8. :)

HPW 4. Feb 2006 11:54

Re: UTF8 String auf Datei mit writeln?
 
Das ist ja auch nicht mein Problem.
Ich will ja zur Kontrolle sehen welche Zeichen zu Double-Byte-Zeichen konvertiert wurden.
Aber warum macht 'writeln' automatisch eine Rückkonvertierung?
Ich will das TXT file ja als UTF8 weitergeben und nicht als ANSI/ASCII.

Waldteufel 4. Feb 2006 11:58

Re: UTF8 String auf Datei mit writeln?
 
Hi.

Zitat:

Zitat von HPW
Aber warum macht 'writeln' automatisch eine Rückkonvertierung?

Woran merkst du denn, dass da eine Rückkonvertierung geschieht. Könnte es nicht einfach sein, dass dein Texteditor, mit dem du die Datei anzeigst, UTF-8 unterstützt? :gruebel:

HPW 4. Feb 2006 12:01

Re: UTF8 String auf Datei mit writeln?
 
Oops, peinlich! :oops:
Ja mein Ultraedit macht beim Öffnen automatisch eine Konvertierung zur Anzeige.
Nochmal Entschuldigung.

Bernhard Geyer 4. Feb 2006 17:56

Re: UTF8 String auf Datei mit writeln?
 
Zitat:

Zitat von HPW
Ich will ja zur Kontrolle sehen welche Zeichen zu Double-Byte-Zeichen konvertiert wurden.

UTF8 ist nicht Double-Byte-Zeichen. UTF8-Codierte Zeichen können 1-3 Byte einnehmen (In neuesten Version mit Unicode 4 auch 4 Byte).
Ist zwar für das Problem irrelevant aber wollte es mal anmerken


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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