ik heb een voor mij vreemd "probleempje"... heb een tabel met als charset: utf8, collation: utf8_unicode_ci (de velden erven de "table charset", maar heb ook geprobeerd het veld een eigen charset te geven).
normaal gesproken doe ik altijd (misschien beetje dubbelop, maar als ik 1 van de 2 weghaal is mijn probleem niet opgelost):
dit heeft eigenlijk nog nooit problemen gegeven.
Nu wil ik in de tabel een stuk tekst wegschrijven waarin het woord "Qualität" staat.
in mijn database komt nu het volgende in "mijntabel" te staan: Qualit
dus hij kapt de string af.
Heb de $strSQL geprint en zie dat de query wel de volledige tekst bevat.
Als ik de utf8-zooi uitslash:
dan wordt de data wel goed in de database weggeschreven.
dan zou je zeggen: laat die utf-8 zooi dan weg uit je code !... dat kan natuurlijk... maar ik wil begrijpen waarom dit fout gaat... want ik gebruik die utf-8-php/mysql-code eigenlijk altijd al zo (probleemloos) en wil wel graag weten wat ik nu precies verkeerd doe om dat in het vervolg niet weer te doen...
iemand enig idee hoe ik er achter kan komen waarom het verkeerd gaat?
phpversie: 5.3.9
mysql versie: 5.5.10
normaal gesproken doe ik altijd (misschien beetje dubbelop, maar als ik 1 van de 2 weghaal is mijn probleem niet opgelost):
PHP:
1
2
3
| $db = new mysqli(....); $db->query("SET NAMES utf8"); $db->set_charset('utf8'); |
dit heeft eigenlijk nog nooit problemen gegeven.
Nu wil ik in de tabel een stuk tekst wegschrijven waarin het woord "Qualität" staat.
PHP:
1
2
3
4
| $strSQL = sprintf("INSERT INTO mijntabel SET " ); $strSQL .= sprintf("mijntekst = '%1\$s' ", $db->real_escape_string($mijntekst)); $strSQL .= sprintf("WHERE id = 1 "); $db->query($strSQL); |
in mijn database komt nu het volgende in "mijntabel" te staan: Qualit
dus hij kapt de string af.
Heb de $strSQL geprint en zie dat de query wel de volledige tekst bevat.
Als ik de utf8-zooi uitslash:
PHP:
1
2
| // $db->query("SET NAMES utf8"); // $db->set_charset('utf8'); |
dan wordt de data wel goed in de database weggeschreven.
dan zou je zeggen: laat die utf-8 zooi dan weg uit je code !... dat kan natuurlijk... maar ik wil begrijpen waarom dit fout gaat... want ik gebruik die utf-8-php/mysql-code eigenlijk altijd al zo (probleemloos) en wil wel graag weten wat ik nu precies verkeerd doe om dat in het vervolg niet weer te doen...
iemand enig idee hoe ik er achter kan komen waarom het verkeerd gaat?
phpversie: 5.3.9
mysql versie: 5.5.10