Beste mensen,
Ik ben inmiddels al lang bezig met een probleem in PHP en ik kom er helaas zelf niet uit. Als ik POST-data uit een HTML-formulier met PHP in een MySQL-database wil opslaan, krijg ik de volgende foutmelding:
Ik zit al een tijd in dit project te vechten met de encoding en wanneer het ene probleem wordt opgelost, verschijnt er weer een nieuw probleem.
Als eerste had ik een probleem met de weergave. Speciale karakters die in de php-bestanden stonden zoals ü en ë werden niet juist weergegeven. Ik heb toen die bestanden opnieuw opgeslagen als UTF-8 ipv. ASCII. Verder heb ik header('Content-Type:text/html; charset=utf-8'); toegevoegd aan connect.php (wordt ingevoegd op iedere pagina) dat verhielp het probleem.
Toen echter werden die karakters uit de database niet juist weergegeven. De betreffende tabel was echter wel ingedeeld als "utf8_general_ci". Een vriend van me heeft me toen de tip gegeven om mysql_set_charset('utf8'); toe te voegen na het openen van de databaseverbinding, dit repareerde de weergave.
Sindsdien krijg ik echter bovenstaande foutmelding bij INSERT en UPDATE queries. Ik heb van alles geprobeerd, zoals het toevoegen van enctype="multipart/form-data" accept-charset="UTF-8" in de FORM tag, mb_internal_encoding('utf8'); toegevoegd aan connect.php, mysql_query("SET NAMES utf8"); en mysql_query("SET CHARACTER SET utf8"); laten uitvoeren voordat de andere queries worden uitgevoerd, alles helaas zonder resultaat.
Na eindeloos Googlen ben ik het spoor compleet bijster. Sowieso heb ik nog nooit op een server meegemaakt dat ik zo veel regels code moet gebruiken om tot een juiste karakterweergave te komen. Ik vraag me dan ook af of er niet een configuratiefout is, hoewel ik wel MySQL opnieuw heb geconfigureerd en daarbij voor de beste ondersteuning voor multilingual heb gekozen.
De oplossing die ik nu heb gevonden is het volgende:
Het werkt, maar het zou volgens mij niet nodig moeten zijn.
Weet iemand een manier om bovenstaande euvels op een efficiënte manier het hoofd te bieden?
Alvast bedankt!
Ik ben inmiddels al lang bezig met een probleem in PHP en ik kom er helaas zelf niet uit. Als ik POST-data uit een HTML-formulier met PHP in een MySQL-database wil opslaan, krijg ik de volgende foutmelding:
code:
1
| Incorrect string value: '\xFCberfo...' for column 'goal' at row 1 |
Ik zit al een tijd in dit project te vechten met de encoding en wanneer het ene probleem wordt opgelost, verschijnt er weer een nieuw probleem.
Als eerste had ik een probleem met de weergave. Speciale karakters die in de php-bestanden stonden zoals ü en ë werden niet juist weergegeven. Ik heb toen die bestanden opnieuw opgeslagen als UTF-8 ipv. ASCII. Verder heb ik header('Content-Type:text/html; charset=utf-8'); toegevoegd aan connect.php (wordt ingevoegd op iedere pagina) dat verhielp het probleem.
Toen echter werden die karakters uit de database niet juist weergegeven. De betreffende tabel was echter wel ingedeeld als "utf8_general_ci". Een vriend van me heeft me toen de tip gegeven om mysql_set_charset('utf8'); toe te voegen na het openen van de databaseverbinding, dit repareerde de weergave.
Sindsdien krijg ik echter bovenstaande foutmelding bij INSERT en UPDATE queries. Ik heb van alles geprobeerd, zoals het toevoegen van enctype="multipart/form-data" accept-charset="UTF-8" in de FORM tag, mb_internal_encoding('utf8'); toegevoegd aan connect.php, mysql_query("SET NAMES utf8"); en mysql_query("SET CHARACTER SET utf8"); laten uitvoeren voordat de andere queries worden uitgevoerd, alles helaas zonder resultaat.
Na eindeloos Googlen ben ik het spoor compleet bijster. Sowieso heb ik nog nooit op een server meegemaakt dat ik zo veel regels code moet gebruiken om tot een juiste karakterweergave te komen. Ik vraag me dan ook af of er niet een configuratiefout is, hoewel ik wel MySQL opnieuw heb geconfigureerd en daarbij voor de beste ondersteuning voor multilingual heb gekozen.
De oplossing die ik nu heb gevonden is het volgende:
PHP:
1
2
3
| if(isset($_POST)){ $_POST = array_map('utf8_encode', $_POST); } |
Het werkt, maar het zou volgens mij niet nodig moeten zijn.
Weet iemand een manier om bovenstaande euvels op een efficiënte manier het hoofd te bieden?
Alvast bedankt!