scope
Aktives Mitglied
Thread Starter
- Dabei seit
- 24.01.2005
- Beiträge
- 4.124
- Reaktionspunkte
- 305
So, folgendes Problem:
Ich habe einen String, der erfolgreich mit der folgenden Funktion als UTF-8 erkannt wird
(Kommt aus einem Formular einer HTML-Seite mit UTF-8-Charset)
Meine PHP-Dateien sind als UTF-8 gespeichert,
und die MySQL Tabellen und Varchar-Spalten sind als utf8_unicode_ci kodiert.
Trotzdem werden Sonderzeichen beim Ablegen in der Datenbank falsch angezeigt ( 'ö' => 'ö')
Wenn ich den String vor der Ausgabe durch die utf8_decode-Funktion laufen lasse, ist die Ausgabe korrekt - wieso?
Woran kann das liegen?
Ich habe einen String, der erfolgreich mit der folgenden Funktion als UTF-8 erkannt wird
(Kommt aus einem Formular einer HTML-Seite mit UTF-8-Charset)
PHP:
function is_utf8( $pString )
{
# From http://w3.org/International/questions/qa-forms-utf-8.html
return preg_match('%^(?:
[x09x0Ax0Dx20-x7E] # ASCII
| [xC2-xDF][x80-xBF] # non-overlong 2-byte
| xE0[xA0-xBF][x80-xBF] # excluding overlongs
| [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte
| xED[x80-x9F][x80-xBF] # excluding surrogates
| xF0[x90-xBF][x80-xBF]{2} # planes 1-3
| [xF1-xF3][x80-xBF]{3} # planes 4-15
| xF4[x80-x8F][x80-xBF]{2} # plane 16
)*$%xs', $pString);
}
Meine PHP-Dateien sind als UTF-8 gespeichert,
und die MySQL Tabellen und Varchar-Spalten sind als utf8_unicode_ci kodiert.
Trotzdem werden Sonderzeichen beim Ablegen in der Datenbank falsch angezeigt ( 'ö' => 'ö')
Wenn ich den String vor der Ausgabe durch die utf8_decode-Funktion laufen lasse, ist die Ausgabe korrekt - wieso?
Woran kann das liegen?