AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit UTF-8 Bytes

Ein Thema von PeterPanino · begonnen am 10. Apr 2009 · letzter Beitrag vom 11. Apr 2009
Antwort Antwort
Seite 1 von 3  1 23      
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 03:46
Hallo, ich habe gerade gemerkt, dass Webbrowser (Firefox, IE) die deutschen Umlaute fehlerhaft darstellen, wenn der HTML-Datei nicht die 3 UTF-8 Erkennungs-Bytes ($EF $BB $BF) vorangestellt sind.

Die HTML-Datei hat folgende Kennung:

Zitat:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="de" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
Wenn ich eine Stringliste mit der Methode SaveToFile speichere, werden die 3 Bytes natürlich nicht gespeichert. Auch der Versuch, die 3 Bytes manuell einzufügen, scheitert: Der Browser stellt die Umlaute dann immer noch fehlerhaft dar:

MyStringList[0] := Chr($EF) + Chr($BB) + Chr($BF) + MyStringList[0]; Aber trotzdem wird die Datei in einem Hex-Editor ganz normal mit den 3 Bytes am Anfang dargestellt!!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 04:24
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 07:15
Zitat von PeterPanino:

Wenn ich eine Stringliste mit der Methode SaveToFile speichere, werden die 3 Bytes natürlich nicht gespeichert.
SaveToFile hat einen zweiten Parameter zur Angabe des Encodings:

SaveToFile('filename.ext', TEncoding.UTF8); sollte funktionieren ...

Cheers,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 07:45
// EDIT:
Ich hatte den falschen Link angeschaut.

Das ist neu in Delphi 2009. Aber in früheren Versionen von Delphi gibts das nicht. Da hier im Profil ja 2009 steht, ist das also das richtige.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 14:56
Zitat von mjustin:
SaveToFile hat einen zweiten Parameter zur Angabe des Encodings:

SaveToFile('filename.ext', TEncoding.UTF8); sollte funktionieren ...

Cheers,
VIELEN DANK! Jetzt funktioniert's! Aber wieso wird dieser Parameter nicht in der Parameterliste im Tooltip dieser Methode angezeigt?:

http://img518.imageshack.us/img518/6393/savetofile.gif

[edit=mkinzler]Img-Tag durch Url-Tag ersetzt, Bild angehängt Mfg, mkinzler[/edit]
Miniaturansicht angehängter Grafiken
savetofile_237.gif  
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 15:24
Zitat von PeterPanino:
Zitat von mjustin:
SaveToFile hat einen zweiten Parameter zur Angabe des Encodings:

SaveToFile('filename.ext', TEncoding.UTF8); sollte funktionieren ...

Cheers,
VIELEN DANK! Jetzt funktioniert's! Aber wieso wird dieser Parameter nicht in der Parameterliste im Tooltip dieser Methode angezeigt?:

http://img518.imageshack.us/img518/6393/savetofile.gif
Delphi ToolTips sind ja nicht gerade ein Highlight ...

Wenn man SL.SaveToFile(); schreibt und die Einfügemarke (Caret) zwischen die Klammern setzt und dann Strg + Umschalt + Leertaste drückt, sieht man alle möglichen Signaturen (in diesem Fall zwei).

Puh, wenigstens das funktioniert

p.s. wie macht man die schicken Screenshots mit Papiereffekt? HyperSnapz? Gimp?

Cheers,

[edit=mkinzler]Quote an Änderung angepasst Mfg, mkinzler[/edit]
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 16:17
Die 3 Bytes sind übrigens der BOM - Byte Order Marker.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 16:22
Hi!

Könntet ihr bitte das Bild als Anhang machen? Dann sind wir nicht von externen, u.U. langsamen Servern abhängig?
Im Quote könnte man dann auch bitte das Bild entfernen, danke.

Im Regelfall sind solche Full-Quotes auch nicht unbedingt sinnvoll...


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 16:26
Ich hab das mal erledigt. Aber das nächste mal selber machen!
Markus Kinzler
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Problem mit UTF-8 Bytes

  Alt 10. Apr 2009, 18:08
Zitat von fkerber:
Könntet ihr bitte das Bild als Anhang machen? Dann sind wir nicht von externen, u.U. langsamen Servern abhängig?
Gute Idee - die meisten Server in den USA werden ja eh bald abgeschaltet, wie man so hört, bzw. werden wegen unbezahlter Stromrechnungen eh bald den Geist aufgeben ... noch mal schnell das Internet auf meiner USB-Festplatte speichern ... so, fertig!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.
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