in meinen Projekteinstellungen VS verwende ich Unicode; Jetzt möchte ich gern einen Cstring, welcher einen Response Header für das Http Protokoll beinhaltet, per Socket rausschicken an den Web-Browser.
Schau ich mir den Stream an, welcher anschließend über den Socket rausgeschickt wird (mit Wireshark), ist dieser UTF-16LE kodiert. Wird anscheinend per Default bei der Unicode-Einstellung verwendet. Das Problem jetzt ist, dass der Web-Browser (wie Firefox) mir die Homepage nicht anzeigt,
weil der Browser anscheinend UTF-16LE nicht versteht. Ich übertrage einen entsprechenden Content-Type Header mit der Information text/html; charset=UTF-16LE - aber das zeigt keinerlei Wirkung. Hab auch schon probiert diese Information im Html-File unterzubringen - auch keine Wirkung.
Code:
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 11
<?xml version="1.0" encoding="utf-16le"?>
<!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>
<title>Beschreibung der Seite</title>
</head>
<body>
</body>
</html>
Code:
1 2 3 4 5 6 7 8 9 10 11
<?xml version="1.0" encoding="utf-16le"?>
<!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>
<title>Beschreibung der Seite</title>
</head>
<body>
</body>
</html>
Code:
1 2 3 4 5 6 7 8 9 10 11
<?xml version="1.0" encoding="utf-16le"?>
<!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>
<title>Beschreibung der Seite</title>
</head>
<body>
</body>
</html>
Verwende ich als Einstellung im VS nicht unicode sondern multibyte code, dann funktioniert alles einwandfrei, da jedes Byte dann "eine neue Information" beinhaltet. Allerdings soll die Page auch in Russisch dargstellt werden können, und somit reichen mir 8bit zur Darstellung nicht aus.
Ich übertrage einen entsprechenden Content-Type Header mit der Information text/html; charset=UTF-16LE - aber das zeigt keinerlei Wirkung.
Ich habe nach einigen Versuchen meine Internetseiten in UTF-8 codiert. Das funktioniert mit allen gängigen Browsern einwandfrei, auch Russisch und Chinesisch ist kein Problem.
- Richard
Jakob Hofmann
Unregistrierter
Jakob Hofmann Unregistrierter
14:26:58 03.09.2010 Titel:
[quote="Calando
Ich habe nach einigen Versuchen meine Internetseiten in UTF-8 codiert. Das funktioniert mit allen gängigen Browsern einwandfrei, auch Russisch und Chinesisch ist kein Problem.
- Richard[/quote]
Über Tipps wäre ich dankbar, weil bis jetzt läuft es nicht;
C/C++ Code:
1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 7 8 9 10 11 12
CString tester2 = _T("ю");
UINT size = tester2.GetLength();
CStringA utf8;
int len = WideCharToMultiByte(CP_UTF8, 0,
tester2.GetString(),
-1, NULL, 0, 0, 0);
Leider funktioniert dieser Code nicht; das Cyrillic-Zeichen mit 0x044E wird in utf-8 nicht mit 0x04 0x4E oder ähnlichem dargestellt, sondern erhält eine komplett andere Hex-Kennzeichnung.
Meine html-Resource ansich hab ich als UTF-8 (ohne Signatur) in VS abgespeichert, öffnen tut sie Windows mit UTF-16LE.
Gruß
Jakob
Jakob Hofmann
Unregistrierter
Jakob Hofmann Unregistrierter
14:29:38 03.09.2010 Titel:
Ich übertrage einen entsprechenden Content-Type Header mit der Information text/html; charset=UTF-16LE - aber das zeigt keinerlei Wirkung.
Wie sind denn Deine Header codiert? Wenn die auch schon UTF16 sind, wundert's mich nicht. Versuch mal, die in US-ASCII zu versenden.
Die Header werden mit der Methode WideCharToMultiByte in UTF-8 konvertiert und daher auch entsprechend richtig dargestellt. Lediglich die Daten werden nicht richtig dargestellt, sobald Cyrillic-Zeichen oder ähnliches vorhanden sind. Hier scheint die Funktion WideCharToMultiByte nicht richtig zu funktionieren.
Jakob Hofmann
Unregistrierter
Jakob Hofmann Unregistrierter
14:49:18 03.09.2010 Titel:
http://en.wikipedia.org/wiki/Cyrillic_(Unicode_block)
Wenn ich den Character mit dem Code 0411 auf dieser Seite umwandle, dann bekomm ich im utf-8 format "0xC3 0x90 0xE2 0x80 0x98"
Leider funktioniert dieser Code nicht; das Cyrillic-Zeichen mit 0x044E wird in utf-8 nicht mit 0x04 0x4E oder ähnlichem dargestellt, sondern erhält eine komplett andere Hex-Kennzeichnung.
Das ist normal.
Jakob Hofmann schrieb:
hier mal ein kleines Bsp:
http://en.wikipedia.org/wiki/Cyrillic_(Unicode_block)
Wenn ich den Character mit dem Code 0411 auf dieser Seite umwandle, dann bekomm ich im utf-8 format "0xC3 0x90 0xE2 0x80 0x98"
Das wiederum nicht. 0x0411 sollte in UTF8 0xD091 ergeben, 0x044E 0xD1AE. Falls ich mich jetzt nicht verrechnet hab.
Jakob Hofmann
Unregistrierter
Jakob Hofmann Unregistrierter
15:24:03 03.09.2010 Titel:
[quote="SG1]Das wiederum nicht. 0x0411 sollte in UTF8 0xD091 ergeben, 0x044E 0xD1AE. Falls ich mich jetzt nicht verrechnet hab.[/quote]
Wie wird das denn berechnet? In erster Linie verwundert es mich, dass ich mehr als zwei Zeichen bekomme für ein Cyrillic-Zeichen :-(
Code:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
<!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>
<title>Beschreibung der Seite</title>
</head>
<body>
Б
</body>
</html>
Code:
1 2 3 4 5 6 7 8 9 10
<!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>
<title>Beschreibung der Seite</title>
</head>
<body>
Б
</body>
</html>
Code:
1 2 3 4 5 6 7 8 9 10
<!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>
<title>Beschreibung der Seite</title>
</head>
<body>
Б
</body>
</html>
Und für die Zeile "Б" erhalte ich dann im Hex-Format :(c390e28098 0d0a); die letzten beiden Zeichen sind klar. Das versteh ich gar nicht. Anschauen tu ich mir die Daten (Hex-Format) mit dem Wireshark.
Gruß
Jakob
Jakob Hofmann
Unregistrierter
Jakob Hofmann Unregistrierter
15:58:08 03.09.2010 Titel:
Wenn ich mir die test.html Datei im Hex-Editor anschaue, dann steht auch 0xD0 0x91 drinnen... Was muss ich schreiben, damit die Datei richtig importiert wird in VS?
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.