Special characters
Heb htmlspecialchars($row['naam']); al geprobeerd maar werkt niet ....
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php $result = mysql_query("SELECT naam FROM users");
while ($row = mysql_fetch_assoc($result)) {
echo '"' . $row['naam'] . '",';
}
echo '" "';
?>
while ($row = mysql_fetch_assoc($result)) {
echo '"' . $row['naam'] . '",';
}
echo '" "';
?>
Alvast bedankt!
Zorg dat zowel je database als je, scripts als je metatags bovenaan je site allemaal in UTF-8 zijn.
1) zorg dat je database de juiste charset heeft. Dit kan je instellen op server niveau, database niveau, tabel niveau, of zelfs op kolom niveau. Merk op dat 'de juiste' niet een standaard is, maar voor elke applicatie anders kan zijn. Het ligt er net aan wat voor karakters je wilt hebben. Als je alleen de Latijnse karakters met een paar accenten wil hebben dan kan je standaard instelling al juist zijn.
Meer info: http://dev.mysql.com/doc/refman/5.0/en/charset.html
2) Zorg dat de connectie met je database correct is ingesteld zodat de data tussen php en mysql goed wordt doorgegeven. Dit is vaak een ontbrekende factor. Als je bijvoorbeeld je database instelt op utf-8, maar de connectie niet, dan kan het zijn dat de data in de fetch al wordt vestoord en dan krijg je het nooit meer goed. Dit is zowel belangrijk voor select statements, als ook voor insert en update! Als je mysqli gebruikt kan je dat doen met de set_charset() functie.
Meer info: http://www.php.net/manual/en/mysqli.set-charset.php
3) Zorg dat je de juiste charset meegeeft in de uiteindelijke output (geldt zowel voor html pagina's, alsook voor ajax output). Dit kan je doen door een meta tag mee te geven, persoonlijk perfereer ik de http header te gebruiken zodat je het voor alle output kunt gebruiken (een meta tag kan je bijvoorbeeld niet meegeven in ajax output).
Waarbij je content type dus afhankelijk laat zijn van de content en de charset moet de charset zijn dit je ook echt gebruikt. utf-8 is mijn default en hier dus alleen een voorbeeld.
Volg je deze stappen correct op, dan zou je geen probleem meer moeten hebben (tenzij de data in je database al corrupt is, dan is er geen oplossing meer).
Gewijzigd op 30/12/2013 13:53:21 door Erwin H
ik heb alles toegepast dus op elke pagina staat in de header,
header('Content-Type: text/html; charset=utf-8');
de database staat juist en de connectie gebeurd correct.
In de database staat bij naam het volgende: rogé dit blijft toch rog? geven op de pagina als ik echter rogé wijzig naar Rogghé komt het er juist te staan.
Moet ik dan alle speciale karakters wijzigen of ben ik fout bezig ?
Toevoeging op 30/12/2013 14:28:17:
Oh heel erg bedankt, ik zag dat het niet 100% correct geconnecteerd werd utf-8.
Heel erg bedankt en ik wens jullie nog een fijne feestdagen!
Waar het probleem kan liggen is wat ik al zei, als de data al corrupt is zal het niet meer goed te krijgen zijn. Probeer eens een nieuw record met speciale tekens in te voeren en kijk dan of het wel juiste tevoorschijn komt.
edit: (inmiddels achterhaald....)
Gewijzigd op 30/12/2013 14:29:33 door Erwin H
Heel erg bedankt en ik wens jullie nog een fijne feestdagen!
Indien je op uw pagina de charset aanpast naar de manier waarop deze word opgeslagen in de database ga je dit probleem oplossen.
<meta http-equiv="content-type" content="text/html; charset=latin1_swedish_ci" />