UTF-8 Problem

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