Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit UTF-8 Bytes (https://www.delphipraxis.net/132339-problem-mit-utf-8-bytes.html)

jaenicke 10. Apr 2009 18:29

Re: Problem mit UTF-8 Bytes
 
Damit du das nicht übersiehst antworte ich mal statt zu editieren:
Zitat:

Zitat von PeterPanino
VIELEN DANK! Jetzt funktioniert's!

Wichtig noch: Wenn du die Kennzeichnungsbytes benutzt, dann kann es Probleme mit älteren Browsern oder Editoren geben. Deshalb warnt das W3C noch vor der Verwendung. Die Kennzeichnung des Charsets, auch im Header, genügt ja.

PeterPanino 10. Apr 2009 19:13

Re: Problem mit UTF-8 Bytes
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von jaenicke
Wichtig noch: Wenn du die Kennzeichnungsbytes benutzt, dann kann es Probleme mit älteren Browsern oder Editoren geben. Deshalb warnt das W3C noch vor der Verwendung. Die Kennzeichnung des Charsets, auch im Header, genügt ja.

Wie, das verstehe ich jetzt nicht. Ich soll also SaveToFile ohne den UTF-8 Encoding-Parameter verwenden und lediglich die Kennzeichnung des Charsets im Header der HTML-Datei belassen? Aber wenn ich SaveToFile mit dem UTF-8 Encoding Parameter verwende, werden die 3 Bytes am Anfang der Datei erzeugt: S. angehängtes Bild.

Und wenn ich nur die Kennzeichnung des Charsets im Header der HTML-Datei belasse (ohne den UTF-8 Parameter beim SaveToFile), werden die Umlaute fehlerhaft angezeigt.

mjustin 10. Apr 2009 19:31

Re: Problem mit UTF-8 Bytes
 
Zitat:

Zitat von PeterPanino
Und wenn ich nur die Kennzeichnung des Charsets im Header der HTML-Datei belasse (ohne den UTF-8 Parameter beim SaveToFile), werden die Umlaute fehlerhaft angezeigt.

Die Funktion Utf8Encode ('ab Werk' in Delphi enthalten) könnte in diesem Fall hilfreich sein. Input ist der Unicodestring => Output ist ein UTF8 String, ohne Vorspann.

Cheers,

pitti platsch 10. Apr 2009 19:37

Re: Problem mit UTF-8 Bytes
 
Das Problem ist, dass dir zwei Hochkomma fehlen. Du hast geschrieben:

Zitat:

Zitat von PeterPanino
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

Nach text/html muss ein " und nach charset= noch eins. Sonst sieht der Browser gar nicht, dass du charset setzen wolltest und wundert sich wahrscheinlich noch was "text/html; charset..." für nen komischer MIME-type ist.

mfg
Peter

jaenicke 10. Apr 2009 19:41

Re: Problem mit UTF-8 Bytes
 
Zitat:

Zitat von pitti platsch
Das Problem ist, dass dir zwei Hochkomma fehlen. Du hast geschrieben:

Zitat:

Zitat von PeterPanino
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

Nach text/html muss ein " und nach charset= noch eins. Sonst sieht der Browser gar nicht, dass du charset setzen wolltest und wundert sich wahrscheinlich noch was "text/html; charset..." für nen komischer MIME-type ist.

Falsch, die Angabe ist so korrekt!

Zitat:

Zitat von PeterPanino
Und wenn ich nur die Kennzeichnung des Charsets im Header der HTML-Datei belasse (ohne den UTF-8 Parameter beim SaveToFile), werden die Umlaute fehlerhaft angezeigt.

Weil dann vermutlich UTF-16 benutzt wird, schließlich siond Strings bei Delphi 2009 ja jetzt standardmäßig UTF-16 kodiert.

Das mit den Bytes war auch nur ein Hinweis. Das W3C warnt davor, das heißt nicht, dass man die nicht benutzen darf. Nur kann es bei älteren Browsern eben Probleme geben.

Zitat:

Zitat von mjustin
Die Funktion Utf8Encode ('ab Werk' in Delphi enthalten) könnte in diesem Fall hilfreich sein. Input ist der Unicodestring => Output ist ein UTF8 String, ohne Vorspann.

Das hatte ich ja oben schon geschrieben, aber bei Delphi 2009 sollte das mit dem UTF8 Parameter ja korrekt passieren.

PeterPanino 11. Apr 2009 00:08

Re: Problem mit UTF-8 Bytes
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von jaenicke
Diese Bytes sind ja nicht das Entscheidende, sondern die Codierung als UTF-8, und die hast du bisher ja nicht gezeigt. Zudem kann man das glaube ich auch im Header noch einmal setzen, der mit der Datei geschickt wird (per PHP ggf.). Der sollte natürlich auch auf UTF-8 lauten. Wie hast du die denn gemacht? Dies funktioniert jedenfalls problemlos, auch ohne diese Bytes:
Delphi-Quellcode:
var
  test: TStringList;
begin
  test := TStringList.Create;
  test.Text := Utf8Encode('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
    + #13#10'<html xmlns="http://www.w3.org/1999/xhtml">'
    + #13#10'<head>'
    + #13#10'<meta http-equiv="Content-Language" content="de" />'
    + #13#10'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'
    + #13#10'<title>Example</title>'
    + #13#10'</head>'
    + #13#10'<body>'
    + #13#10'Das ist ein Text mit ä, ö und ü als Umlaute drin.'
    + #13#10'</body>'
    + #13#10'</html>');
  test.SaveToFile('b:\xyz.html');
  test.Free;
Die Bytes kannst du natürlich zusätzlich auch hinzufügen.

Hallo jaenicke, ich habe das jetzt getestet und es funktioniert NICHT:

Bild entfernt und in Anhang gepackt

Das einzige was funktioniert ist SaveToFile mit dem UTF-Encode Parameter. Und dabei werden die drei genannten Bytes am Anfag der Datei erzeugt.

[edit=SirThornberry]Bild in Anhang gepackt - Mfg, SirThornberry[/edit]

jaenicke 11. Apr 2009 00:14

Re: Problem mit UTF-8 Bytes
 
Richtig, in der ersten Antwort hatte ich auch nicht auf deine Profilangabe mit Delphi 2009 geachtet. Da hat sich das ja etwas geändert. In einer TStringList sind da ja jetzt UnicodeStrings drin.

Für aktuelle Browser ist eine mit den Bytes gespeicherte Datei ja auch sicher kein Problem. Auf welche Browser sich die Warnung des W3C bezieht, steht leider nicht dabei. Im IE gibts jedenfalls auch in älteren Versionen keine Probleme.

Deshalb ist das so schon in Ordnung, solange nicht jemand sehr alte Software zum Öffnen der Dateien verwendet und du damit rechnen musst, dass das so ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz