UTF-8 Problem
am 12.06.2006 08:49:33 von letters
Hallo,
ich habe eine php Seite, die natürlich eine html Seite generiert. Diese ist
als charset utf-8 festgelegt. Das ist nötig, das auf der Seite japanische
und grieschische Schriftzeichen angewendet werden. Das funktioniert soweit
auch alles prima. Nur wie bekomme ich den mit utf-8 codierten String in die
Datenbank? Das Feld in der Tabelle ist als longtext (phpMyAdmin) ausgelegt.
Serverzugriff habe ich nicht. Kann ich jetzt doch per php der
Tebellenspalte die codierung utf-8 zuweisen oder gibt es noch eine
Möglichkeit. Für mich komisch ist noch folgendes:
Aus php heraus mit
$mysql_string = "INSERT INTO japs (text_utf8) VALUES('$japs')";
$result = mysql_query($mysql_string);
passiert gar nichts. ($japs enthält den String, der von einem php Script
übergeben wurde ããã¤ãç¨ãã¬ãã·ã¥ã©ãã¾ã§ãããªã¸ãã« )
Es wird nicht einmal ein Fehler ausgegeben.
Wenn ich aber die Zeile
$mysql_string = "INSERT INTO japs (text_utf8)
VALUES('ããã¤ãç¨ãã¬ãã·ã¥ã©ãã¾ã§ãããªã ¸ãã«')"; direkt in phpMyAdmin eingebe, dann werden
die Sonderzeichen automatisch in HTML Entities umgewandelt. Warum direkt
aber nicht aus meinem Script heraus?
mfg
Mathias
Re: UTF-8 Problem
am 12.06.2006 09:36:29 von letters
Am Mon, 12 Jun 2006 08:49:33 +0200 schrieb Mathias Fiedler:
> Hallo,
> ich habe eine php Seite, die natürlich eine html Seite generiert. Diese ist
> als charset utf-8 festgelegt. Das ist nötig, das auf der Seite japanische
> und grieschische Schriftzeichen angewendet werden. Das funktioniert soweit
> auch alles prima. Nur wie bekomme ich den mit utf-8 codierten String in die
> Datenbank? Das Feld in der Tabelle ist als longtext (phpMyAdmin) ausgelegt.
> Serverzugriff habe ich nicht. Kann ich jetzt doch per php der
> Tebellenspalte die codierung utf-8 zuweisen oder gibt es noch eine
> Möglichkeit. Für mich komisch ist noch folgendes:
> Aus php heraus mit
> $mysql_string = "INSERT INTO japs (text_utf8) VALUES('$japs')";
> $result = mysql_query($mysql_string);
> passiert gar nichts. ($japs enthält den String, der von einem php Script
> übergeben wurde ããã¤ãç¨ãã¬ãã·ã¥ã©ãã¾ã§ãããªã¸ãã« )
> Es wird nicht einmal ein Fehler ausgegeben.
> Wenn ich aber die Zeile
> $mysql_string = "INSERT INTO japs (text_utf8)
> VALUES('ããã¤ãç¨ãã¬ãã·ã¥ã©ãã¾ã§ãããªã ¸ãã«')"; direkt in phpMyAdmin eingebe, dann werden
> die Sonderzeichen automatisch in HTML Entities umgewandelt. Warum direkt
> aber nicht aus meinem Script heraus?
>
> mfg
>
> Mathias
Habs gefunden.
Re: UTF-8 Problem
am 12.06.2006 09:48:24 von Christian Kirsch
Mathias Fiedler schrieb:
>
> Habs gefunden.
Das ist ja ganz großartig. Noch großartiger wäre es allerdings, wenn
Du statt solcher sinnfreier Selbstgespräche hier die LÖSUNG posten
würdest. Dann könnte nämlich jemand anders, der vielleicht auch auf
über so ein Problem stolpert, von Deinen Erfahrungen profitieren - so
wie Du von den Erfahrungen der Leute in dieser Gruppe profitieren
wolltest.
Re: UTF-8 Problem
am 12.06.2006 11:10:48 von letters
Am Mon, 12 Jun 2006 09:48:24 +0200 schrieb Christian Kirsch:
> Mathias Fiedler schrieb:
>>
>> Habs gefunden.
>
> Das ist ja ganz großartig. Noch großartiger wäre es allerdings, wenn
> Du statt solcher sinnfreier Selbstgespräche hier die LÖSUNG posten
> würdest. Dann könnte nämlich jemand anders, der vielleicht auch auf
> über so ein Problem stolpert, von Deinen Erfahrungen profitieren - so
> wie Du von den Erfahrungen der Leute in dieser Gruppe profitieren
> wolltest.
Tut mir leid, ich war etwas in Zeitnot. Das nicht in die DB schreiben, war
ein Schreibfehler von mir.
Die HTML Entities werden geschrieben, wenn die Tabellenzelle als Varchar
deklariert wird. Man kann die Zelle auch nach UTF-8 codieren
(ALTER TABLE test MODIFY name VARCHAR(255) CHARACTER SET utf8;), das war
aber dank varchar nicht nötig. Es klappt auch ohne.
Mathias
Re: UTF-8 Problem
am 12.06.2006 11:13:23 von letters
Am Mon, 12 Jun 2006 11:10:48 +0200 schrieb Mathias Fiedler:
> Tut mir leid, ich war etwas in Zeitnot. Das nicht in die DB schreiben, war
> ein Schreibfehler von mir.
> Die HTML Entities werden geschrieben, wenn die Tabellenzelle als Varchar
> deklariert wird. Man kann die Zelle auch nach UTF-8 codieren
> (ALTER TABLE test MODIFY name VARCHAR(255) CHARACTER SET utf8;), das war
> aber dank varchar nicht nötig. Es klappt auch ohne.
>
> Mathias
Hab ich mich auch noch verschieben. Hier nun richtig.
Die HTML Entities werden geschrieben, wenn die Tabellenzelle als Longtext
deklariert wird. Mit varchar funktioniert es. Man kann die Zelle auch nach
UTF-8 codieren
(ALTER TABLE test MODIFY name VARCHAR(255) CHARACTER SET utf8;),
das war aber dank varchar nicht nötig. Es klappt auch ohne.
Mathias