Hoi,
Ik heb een veld in een tabel in een database waarin de gebruiker teksten kan opslaan. In deze tekst staan ook tekens als bijvoorbeeld het euroteken (€). Het opslaan en weergeven daarvan is geen enkel probleem. De Charset van de tabel staat op latin1.
Nu gebruik ik een stukje Ajax om dit veld op te halen en output dit met json_encode(). Dit werkt perfect, behalve als er een euroteken in staat, dan krijg ik de waarde "null" terug.
Nu weet ik dat json_encode() UTF-8 verwacht. Echter gebruik ik utf8_encode() voor dit veld, dan komt de tekst in beeld, maar is het euroteken verdwenen. Wat volgens mij ook logisch is omdat utf8_encode() weer ISO-8859-1 encoding verwacht.
De enige niet zo fraaie oplossing die nu werkt is voor de query deze query uit te voeren:
mysql_query("SET NAMES 'utf8'");
Maar er moet toch wel een nette manier zijn hiervoor? Wie kan mij uitleggen wat ik verkeerd doe? Die charsets blijven me altijd in de weg zitten met dit soort dingen.
Ik heb een veld in een tabel in een database waarin de gebruiker teksten kan opslaan. In deze tekst staan ook tekens als bijvoorbeeld het euroteken (€). Het opslaan en weergeven daarvan is geen enkel probleem. De Charset van de tabel staat op latin1.
Nu gebruik ik een stukje Ajax om dit veld op te halen en output dit met json_encode(). Dit werkt perfect, behalve als er een euroteken in staat, dan krijg ik de waarde "null" terug.
Nu weet ik dat json_encode() UTF-8 verwacht. Echter gebruik ik utf8_encode() voor dit veld, dan komt de tekst in beeld, maar is het euroteken verdwenen. Wat volgens mij ook logisch is omdat utf8_encode() weer ISO-8859-1 encoding verwacht.
De enige niet zo fraaie oplossing die nu werkt is voor de query deze query uit te voeren:
mysql_query("SET NAMES 'utf8'");
Maar er moet toch wel een nette manier zijn hiervoor? Wie kan mij uitleggen wat ik verkeerd doe? Die charsets blijven me altijd in de weg zitten met dit soort dingen.
[ Voor 4% gewijzigd door Verwijderd op 18-09-2012 20:30 ]