Special characters

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jos Verstraeten

Jos Verstraeten

30/12/2013 13:30:17
Quote Anchor link
Kan iemand mij helpen wanneer er in de database een naam voorkomt met speciale karakters zoals é,è,à, ... wordt dat vervangen door een vaag teken: �. Kan iemand me helpen dat te verhelpen?

Heb htmlspecialchars($row['naam']); al geprobeerd maar werkt niet ....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php $result = mysql_query("SELECT naam FROM users");
                    while ($row = mysql_fetch_assoc($result)) {
echo '&quot;' . $row['naam'] . '&quot;,';
}

echo '&quot; &quot;';
 ?>


Alvast bedankt!
 
PHP hulp

PHP hulp

23/12/2024 08:14:40
 
- Ariën  -
Beheerder

- Ariën -

30/12/2013 13:45:47
Quote Anchor link
Zorg dat zowel je database als je, scripts als je metatags bovenaan je site allemaal in UTF-8 zijn.
 
Erwin H

Erwin H

30/12/2013 13:51:55
Quote Anchor link
Drie stappen:
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).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header('Content-Type: text/html; charset=utf-8');
?>


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
 
Jos Verstraeten

Jos Verstraeten

30/12/2013 14:17:02
Quote Anchor link
Hey bedankt voor jullie snelle reactie,
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&eacute; 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!
 
Erwin H

Erwin H

30/12/2013 14:28:46
Quote Anchor link
Dan ben je fout bezig. Ja het werkt op je pagina, maar wat bijvoorbeeld niet meer werkt is zoeken in je database. Als iemand bijvoorbeeld zoekt op 'roge' dan krijgt hij wel 'rogé' te zien, maar niet 'Rog&eacute;'.
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
 
Jos Verstraeten

Jos Verstraeten

31/12/2013 18:14:20
Quote Anchor link
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!
 
Bart Smulders

Bart Smulders

01/01/2014 18:07:49
Quote Anchor link
De manier waarop de database standaard de gegevens opslaat is vaak latin1_swedish_ci

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" />
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.