probleem met umlaut

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jacob Goor

Jacob Goor

04/03/2013 17:06:17
Quote Anchor link
Ik gebruik php en mysql op onze Nederlandse server. Daar werkt de umlaut goed. Ik gebruik daarbij een Duits toetsenbord. Dus gen enkel probleem.

Op onze Duitse server werkt het niet. Ik krijg dan onzin tekens. In het invoer veld staat het goed. Na het opslaan staat er onzin in de database.

Het lijkt dus op een instelling in mysql. Heeft iemand tips?
 
PHP hulp

PHP hulp

14/05/2024 01:10:14
 
Erwin H

Erwin H

04/03/2013 17:15:37
Quote Anchor link
Wil je het voor eens en voor altijd goed hebben dan heb je 4 (of minimaal de eerste 3) stappen nodig:
1) zet de collatie en character set van je database goed (dit moet je op table niveau regelen, of desnoods zelfs op kolomniveau).
SQL update query om je tabel goed te zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ALTER TABLE <table> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

(ps ik gebruik hier utf8_unicode_ci, dat is mijn standaard, een andere kan voor jou beter zijn, check de mysql manual)

2) Elke keer dat je connectie maakt met je database moet je die connectie ook de juiste collatie en character set meegeven. Na het maken van je connectie kan je deze query daarvoor gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SET names utf8, COLLATION_CONNECTION='utf8_unicode_ci', CHARACTER SET utf8

(in sommige adapters kan je via een ingebouwde functie doe, check de manual)

3) Zorg dat je de juiste header verstuurt naar de browser:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header( 'Content-Type: charset=utf8' ));
?>


4) Optioneel, plaats ook een charset in je meta tags van je pagina. Dit zou niet meer hoeven als je de juiste header verstuurt, maar voor de volledigheid:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">


Bij stap 1 ga ik ervanuit dat je al een bestaande database goed wilt zetten. Beter is het om je database zo in te stellen dat je bij het aanmaken van de tabellen alles al direct juist zet. Nu, bij het converteren, kan het voorkomen dat al bestaande karakters niet goed geconverteerd worden. Daar kan ik helaas niets aan doen (misschien heeft iemand anders tips). Je zal dus wel je data moeten controleren en een backup is ook geen slecht idee...

En als laatste opmerking, kijk niet rechtstreeks in je database of de karakters daar goed overkomen. Over het algemeen krijg je via phpmyadmin of de command line interface niet te zien wat er echt in de database staat, maar een 'vertaling' van de bits. Dat je daar dus eventueel hele rare tekens ziet zegt niets.
Gewijzigd op 04/03/2013 17:18:33 door Erwin H
 



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.