Hallo,
ich hoffe mal ich bin hier nicht zu sehr offTopic.
Ich habe eine Seite, die mit deutschen, japanischen und grieschischen
Schriftzeichen arbeitet. Um die Seite administrieren zu können, habe ich
ein Eingabemodul für die Datenbank gebaut.
Die php Seite ist in utf-8 codiert.
Um die Daten eingeben zu können, welche einen ziemlich umfangreichen Text
darstellen, habe ich eine Textarea verwendet. Für die reinen Namen, also
kürzere Bezeichnung habe ich als Eingabefeld ein normales Textfeld.
Ich kann nun alle Schriftzeichen jeweils in das Textfeld, wie auch in die
Textarea eintragen (japanische Zeichen per Drag und Drop). Das klappt und
wird auch in die DB geschrieben. Die Ausgabe erfolgt dann innerhalb eines
div. Auch dort werden die japanischen Zeichen wieder korrekt angezeigt. In
meinem Admin-Tool sehe ich bei der Prüfung in den Textfeldern auch die
japanischen Zeichen. In der Textarea sehe ich aber an Stelle der
japanischen zeichen nur leere Stellen. Dsa passiert übrigens schon bei der
Eingabe. Wenn ich einen Text mit deutschen und japanischen Schriftzeichen
in die Textarea kopiere, werden nur noch die deutschen Schriftzeichen
angezeigt, an Stelle der japanischen sehe ich nur freie Stellen (bei dem
Textfeld sehe ich auch die japanischen Zeichen, nur nicht in der Textarea).
Als würden dort Leerzeichen stehen. In die Datenbank werden die Zeichen
aber korrekt gespeichert und die Ausgabe auf der Seite in dem div
funktioniert auch wieder. Um aber das Ganze überprüfen zu können, muß ich
die Zeichen in meinem Admin-Tool auch in der Textarea sehen. Wie bekomme
ich das hin ?
mfg
Mathias
Re: utf-8
am 16.08.2006 10:09:50 von Ulf Kadner
Mathias Fiedler wrote:
> Die php Seite ist in utf-8 codiert.
Du meinst damit wohl das HTML-Dokument das PHP ausgibt? Oder meinst Du
den Source des PHP-Skripts?
Wird euch ein utf-8 header vom Server geschickt? Oder setzt Du nur nen
Meta? Oder was? :-)
> wird auch in die DB geschrieben. Die Ausgabe erfolgt dann innerhalb eines
> div. Auch dort werden die japanischen Zeichen wieder korrekt angezeigt. In
> meinem Admin-Tool sehe ich bei der Prüfung in den Textfeldern auch die
> japanischen Zeichen. In der Textarea sehe ich aber an Stelle der
> japanischen zeichen nur leere Stellen.
Wenn Du uns nicht sagst wie genau Du das in PHP machts koennen wir Dir
auch nicht sagen ob da was falsch ist.
Haste auch schon mit unterschiedlichen Browser probiert?
MfG, Ulf
Re: utf-8
am 16.08.2006 10:13:32 von Christian Schmelzer
Mathias Fiedler wrote:
> Hallo,
> ich hoffe mal ich bin hier nicht zu sehr offTopic.
> Ich habe eine Seite, die mit deutschen, japanischen und grieschischen
> Schriftzeichen arbeitet. Um die Seite administrieren zu können, habe
> ich ein Eingabemodul für die Datenbank gebaut.
> Die php Seite ist in utf-8 codiert.
> Um die Daten eingeben zu können, welche einen ziemlich umfangreichen
> Text darstellen, habe ich eine Textarea verwendet. Für die reinen
> Namen, also kürzere Bezeichnung habe ich als Eingabefeld ein normales
> Textfeld.
> Ich kann nun alle Schriftzeichen jeweils in das Textfeld, wie auch in
> die Textarea eintragen (japanische Zeichen per Drag und Drop). Das
> klappt und wird auch in die DB geschrieben. Die Ausgabe erfolgt dann
> innerhalb eines div. Auch dort werden die japanischen Zeichen wieder
> korrekt angezeigt. In meinem Admin-Tool sehe ich bei der Prüfung in
> den Textfeldern auch die japanischen Zeichen. In der Textarea sehe
> ich aber an Stelle der japanischen zeichen nur leere Stellen. Dsa
> passiert übrigens schon bei der Eingabe. Wenn ich einen Text mit
> deutschen und japanischen Schriftzeichen in die Textarea kopiere,
> werden nur noch die deutschen Schriftzeichen angezeigt, an Stelle der
> japanischen sehe ich nur freie Stellen (bei dem Textfeld sehe ich
> auch die japanischen Zeichen, nur nicht in der Textarea). Als würden
> dort Leerzeichen stehen. In die Datenbank werden die Zeichen aber
> korrekt gespeichert und die Ausgabe auf der Seite in dem div
> funktioniert auch wieder. Um aber das Ganze überprüfen zu können, muß
> ich die Zeichen in meinem Admin-Tool auch in der Textarea sehen. Wie
> bekomme ich das hin ?
>
Hallo,
indem du auch mal relevanten Sourcecode postest. Wie soll man so was zu
deiner Frage sagen?
Christian
Re: utf-8
am 16.08.2006 17:05:01 von letters
Am Wed, 16 Aug 2006 10:09:50 +0200 schrieb Ulf Kadner:
> Mathias Fiedler wrote:
>
>> Die php Seite ist in utf-8 codiert.
>
> Du meinst damit wohl das HTML-Dokument das PHP ausgibt? Oder meinst Du
> den Source des PHP-Skripts?
> Wird euch ein utf-8 header vom Server geschickt? Oder setzt Du nur nen
> Meta? Oder was? :-)
>
>> wird auch in die DB geschrieben. Die Ausgabe erfolgt dann innerhalb eines
>> div. Auch dort werden die japanischen Zeichen wieder korrekt angezeigt. In
>> meinem Admin-Tool sehe ich bei der Prüfung in den Textfeldern auch die
>> japanischen Zeichen. In der Textarea sehe ich aber an Stelle der
>> japanischen zeichen nur leere Stellen.
>
> Wenn Du uns nicht sagst wie genau Du das in PHP machts koennen wir Dir
> auch nicht sagen ob da was falsch ist.
>
> Haste auch schon mit unterschiedlichen Browser probiert?
>
> MfG, Ulf
Ich habe es mit unterschiedlichen Browsern probiert ud immer das gleiche
Ergebnis.
Wie gesagt, die Anzeige funktioniert bei de rAusgabe innerhalb eines div
und auch in einem ganz normalem Textfeld nur
nicht in der Textarea. Alle Zeichenwerden koorekt übermittelt, nur eben
nicht angezeigt.
>
> Wie gesagt, die Anzeige funktioniert bei de rAusgabe innerhalb eines div
> und auch in einem ganz normalem Textfeld nur
> nicht in der Textarea. Alle Zeichenwerden koorekt übermittelt, nur eben
> nicht angezeigt.
Ich bezweifel jetzt mal, das bei HTML-Attributen ein Leerzeichen vor und
nach dem "=" hinkommt, da das Leerzeichen ja mehrere Attribute trennt.
Ansonsten: Siehst du den Text nur im Browser (gerenderte Ansicht) nicht,
oder in der Quelltextansicht auch nicht?
Gruß
Carsten
Re: utf-8
am 16.08.2006 18:19:47 von letters
Am Wed, 16 Aug 2006 17:20:48 +0200 schrieb Carsten Wiedmann:
> Mathias Fiedler schrieb:
>
>> die Textarea liegt in folgendem Scriptteil:
>>
>>
>>
>> Wie gesagt, die Anzeige funktioniert bei de rAusgabe innerhalb eines div
>> und auch in einem ganz normalem Textfeld nur
>> nicht in der Textarea. Alle Zeichenwerden koorekt übermittelt, nur eben
>> nicht angezeigt.
>
> Ich bezweifel jetzt mal, das bei HTML-Attributen ein Leerzeichen vor und
> nach dem "=" hinkommt, da das Leerzeichen ja mehrere Attribute trennt.
>
> Ansonsten: Siehst du den Text nur im Browser (gerenderte Ansicht) nicht,
> oder in der Quelltextansicht auch nicht?
>
> Gruß
> Carsten
Im Quelltext ist alles zu sehen.
Mathias
Re: utf-8
am 16.08.2006 18:36:34 von Ulf Kadner
Mathias Fiedler wrote:
> Ich habe es mit unterschiedlichen Browsern probiert ud immer das gleiche
> Ergebnis.
Hallo!
Dann liegt der Fehler bei Dir bzw. in Deinem Code. :-)
nee ich meine Damit die HTTP-Header, der ist hier der entscheidende.
Wenn der Server bereits z.B.: ISO-???? sendet wirds meistens nix.
Firefox hat ne Extension die HTTP-Header lesen kann. Muste mal suchen.
>
Bist Du Dir wirklich 10%ig sicher das die Leerzeichen vor und nach den
'=' erlaubt sind? Mach die mal weg!
> Wie gesagt, die Anzeige funktioniert bei de rAusgabe innerhalb eines div
> und auch in einem ganz normalem Textfeld nur
> nicht in der Textarea. Alle Zeichenwerden koorekt übermittelt, nur eben
> nicht angezeigt.
Dann probier halt erst mal meinen Vorschlag.
Hier mal ein Testcase (quick&dirty) das Dir zeigt das es kein Problem
sein sollte:
header('Content-type: text/html; charset=UTF-8');
$db = array('localhost','root','*********');
$lnk = mysql_connect($db[0],$db[1],$db[2])
or die('Mysql-Connection fails');
mysql_select_db('test1') or die('DB-Selection fails!');
$query = "SHOW TABLES FROM test1 LIKE 'atable'";
$res = mysql_query($query, $lnk);
$txt = "ÄÖÜ äöü ß\nàèòù ÀÈÒÙ\nâêôûî ÂÊÔÛÎ\nÇÿø£Ø×áí";
if (mysql_num_rows($res) < 1) {
// Tabelle erstellen
$query = 'CREATE TABLE atable (id INT AUTO_INCREMENT, '.
'val TEXT COLLATE utf8_unicode_ci NOT NULL, '.
'PRIMARY KEY (id) ) '.
'DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
mysql_query($query, $lnk) or die('Can not create table');
$query = "INSERT INTO atable VALUES(NULL,'".
mysql_real_escape_string($txt,$lnk)."')";
mysql_query($query, $lnk) or die('Can not insert data');
}
mysql_free_result($res);
if (isset($_POST) && isset($_POST['Save'])) {
$query = "UPDATE atable SET val='".
mysql_real_escape_string($_POST['textarea'],$lnk).
"' WHERE id=1";
mysql_query($query, $lnk) or die('Update fails!');
}
$res = mysql_query('SELECT val FROM atable WHERE id=1',$lnk)
or die('Selection of current data fails');
if (mysql_num_rows($res) < 1) $txt = '';
else {
$tmp = mysql_fetch_assoc($res);
$txt = $tmp['val'];
}
mysql_free_result($res);
?>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Unbenanntes Dokument
MfG, Ulf
Re: utf-8
am 16.08.2006 23:00:38 von Matthias Esken
On Wed, 16 Aug 2006 18:36:34 +0200, Ulf Kadner wrote:
> Mathias Fiedler wrote:
>
>>
>> [...]
>
> nee ich meine Damit die HTTP-Header, der ist hier der entscheidende.
> Wenn der Server bereits z.B.: ISO-???? sendet wirds meistens nix.
> Firefox hat ne Extension die HTTP-Header lesen kann. Muste mal suchen.
HTTPLiveHeaders
>>
>
> Bist Du Dir wirklich 10%ig sicher das die Leerzeichen vor und nach den
> '=' erlaubt sind? Mach die mal weg!
Sie sind zulässig.
Gruß,
Matthias
Re: utf-8
am 17.08.2006 00:07:16 von Carsten Wiedmann
Mathias Fiedler schrieb:
> > >
> > > onclick=
> > > "leer(this.id);" tabindex = "
> > > ?>">
> > > if($info == "") {echo "No Informations";}else{echo $info;}
> > > ?>
> >
> > Ich bezweifel jetzt mal, das bei HTML-Attributen ein Leerzeichen vor
> > und nach dem "=" hinkommt, da das Leerzeichen ja mehrere Attribute
> > trennt.
Wie wir jetzt ja gelernt haben, sind die Leerzeichen wohl doch erlaubt.
Machen würde ich sie persönlich jetzt trotzdem nicht. Evtl. gibts ja doch
UA's die sich daran stören? Besser also z.B.: cols="100" anstatt: cols =
"100"
> > Ansonsten: Siehst du den Text nur im Browser (gerenderte Ansicht)
> > nicht, oder in der Quelltextansicht auch nicht?
>
> Im Quelltext ist alles zu sehen.
Was immer man aus einem Script im Browser ausgibt, darf mind. bestimmte
Zeichen nicht direkt enthalten. Besser also wohl
|
htmlspecialchars($info);} ?>
Gruß
Carsten
Re: utf-8
am 17.08.2006 18:37:47 von letters
Am Thu, 17 Aug 2006 00:07:16 +0200 schrieb Carsten Wiedmann:
> Mathias Fiedler schrieb:
>
>>> >
>>> > onclick=
>>> > "leer(this.id);" tabindex = "
>>> > ?>">
>>> > if($info == "") {echo "No Informations";}else{echo $info;}
>>> > ?>
>>>
>>> Ich bezweifel jetzt mal, das bei HTML-Attributen ein Leerzeichen vor
>>> und nach dem "=" hinkommt, da das Leerzeichen ja mehrere Attribute
>>> trennt.
>
> Wie wir jetzt ja gelernt haben, sind die Leerzeichen wohl doch erlaubt.
> Machen würde ich sie persönlich jetzt trotzdem nicht. Evtl. gibts ja doch
> UA's die sich daran stören? Besser also z.B.: cols="100" anstatt: cols =
> "100"
>
>
>>> Ansonsten: Siehst du den Text nur im Browser (gerenderte Ansicht)
>>> nicht, oder in der Quelltextansicht auch nicht?
>>
>> Im Quelltext ist alles zu sehen.
>
> Was immer man aus einem Script im Browser ausgibt, darf mind. bestimmte
> Zeichen nicht direkt enthalten. Besser also wohl
>|
> htmlspecialchars($info);} ?>
>
Das hab ich schon versucht, bringt aber gar nichts. Das beist sich
warscheinlich mit der ohnehin vorhandenen utf-8 Codierung.
Mathias
Re: utf-8
am 17.08.2006 18:57:11 von Carsten Wiedmann
Mathias Fiedler schrieb:
> > > > Ansonsten: Siehst du den Text nur im Browser (gerenderte Ansicht)
> > > > nicht, oder in der Quelltextansicht auch nicht?
> > >
> > > Im Quelltext ist alles zu sehen.
> >
> > Was immer man aus einem Script im Browser ausgibt, darf mind. bestimmte
> > Zeichen nicht direkt enthalten. Besser also wohl
> > >
> > htmlspecialchars($info);} ?>
> >
> Das hab ich schon versucht, bringt aber gar nichts. Das beist sich
> warscheinlich mit der ohnehin vorhandenen utf-8 Codierung.
Was hat htmlspecialchars() mit der utf8-Kodierung zu tun?
BTW: Gibt's eine Onlineversion von dieser Datei?
Gruß
Carsten
Re: utf-8
am 17.08.2006 19:09:10 von Carsten Wiedmann
Carsten Wiedmann schrieb:
> > Das hab ich schon versucht, bringt aber gar nichts. Das beist sich
> > warscheinlich mit der ohnehin vorhandenen utf-8 Codierung.
>
> Was hat htmlspecialchars() mit der utf8-Kodierung zu tun?
Na gut. Als 3. Parameter kann man seit 4.1.0 noch angeben, dass man UTF-8
hat:
|
| if($info == "") {
| echo "No Informations";
| } else {
| echo htmlspecialchars($info, ENT_COMPAT, 'UTF-8');
| }
| ?>
Da die 4 Zeichen die in Entities gewandelt werden, ja bei iso-8859-1 und
utf-8 die selbe Codierung haben, sollte sich das aber nicht wirklich
auswirken?
Gruß
Carsten
Re: utf-8
am 20.08.2006 10:56:41 von Ulf Kadner
Matthias Esken wrote:
> Ulf Kadner wrote:
>>Firefox hat ne Extension die HTTP-Header lesen kann. Muste mal suchen.
>
> HTTPLiveHeaders
Genau das meine ich. Danke!
>>Bist Du Dir wirklich 10%ig sicher das die Leerzeichen vor und nach den
> Sie sind zulässig.