Hallo iedereen
Ik heb bij het toevoegen van de database "utf8_general_ci" gekozen. Echter het probleem blijft dat de ë, é en è vervangen worden door rare tekens wanneer ik nieuwe rijen met deze tekens aan de database toevoeg.
Op elke pagina van de website staat in de header
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Kan iemand helpen aub? Via de zoekfunctie kon ik niets vinden, en de dingen die ik via Google probeerde lukten helaas niet.
Alvast bedankt
Herman
- UTF-8, toch wordt ë als rare tekens in de database gezet
-
29-05-2011, 19:16 #1
- Berichten
- 92
- Lid sinds
- 15 Jaar
UTF-8, toch wordt ë als rare tekens in de database gezet
-
In de schijnwerper
-
29-05-2011, 19:19 #2
- Berichten
- 208
- Lid sinds
- 15 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
htmlentities($str); Werkt beter
-
29-05-2011, 19:25 #3
- Berichten
- 92
- Lid sinds
- 15 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
Dat is een oplossing inderdaad. Maar in de database zelf staan dan ook deze rare tekens, en ik had graag gewild dat dit meteen correct in de database stond.
In de website zelf wordt de ë juist weergegeven, alleen staat dit in de database niet goed. Is dit normaal of kan je dit ook in de database goed krijgen?Laatst aangepast door Herman Dewulf : 29-05-2011 om 19:31
-
29-05-2011, 20:29 #4
- Berichten
- 208
- Lid sinds
- 15 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
Dat is een oplossing inderdaad. Maar in de database zelf staan dan ook deze rare tekens, en ik had graag gewild dat dit meteen correct in de database stond.
In de website zelf wordt de ë juist weergegeven, alleen staat dit in de database niet goed. Is dit normaal of kan je dit ook in de database goed krijgen?
Jeroen Visser
-
29-05-2011, 20:31 #5
- Berichten
- 943
- Lid sinds
- 15 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
Gewoon bij je insert htmlentities() gebruiken, werkt ook =)
-
29-05-2011, 21:35 #6
- Berichten
- 84
- Lid sinds
- 16 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
In de database kun je beter UTF8-bin kiezen. Maar los daarvan, voor je het in de database zet, kun je beter zorgen dat je data inderdaad goed omgezet wordt.
Of het uitmaakt dat het in de database verkeerd staat, zou ik me niet al te druk om maken. Het staat wellicht iets netter, maar goed, maakt het echt uit? Ik geloof van niet.
Zolang het eindresultaat goed is, niet al te druk maken.
-
29-05-2011, 21:56 #7
- Berichten
- 146
- Lid sinds
- 17 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
Nadat je connectie met de database hebt gelegd telkens SQL uitvoeren: $db->query("SET NAMES utf8");
http://forums.mysql.com/read.php?103,46870,47245
-
29-05-2011, 21:58 #8
- Berichten
- 92
- Lid sinds
- 15 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
Hoe moet ik die query "eerst utf8_encoden", kan je daar waar info over geven aub?
-
30-05-2011, 09:28 #9
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: UTF-8, toch wordt ë als rare tekens in de database gezet
utf8_general_ci is niet de tekenset die je veranderd maar de collatie, dit is een manier waarop je de letters alfabetisch sorteert. Er zijn hier een aantal voorbeeld van, maar Zweedse klanken worden bijvoorbeeld anders gesorteerd dan dezelfde letters+speciale tekens in Duitsland.
Als eerste moet je je hele database aanpassen zodat deze utf8 gebruikt als tekenset en utf8_general_ci als collatie. Daarna moet je nog elke tabel in je database apart gaan aanpassen, een voorbeeld querie is als volgt:
Code:ALTER DATABASE vanhees_db CHARACTER SET utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT COLLATE utf8_general_ci; ALTER TABLE `cpanel_users` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE `cpanel_users` CHANGE `usr_email` `usr_email` VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; ALTER TABLE `cpanel_users` CHANGE `usr_password` `usr_password` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; ALTER TABLE `cpanel_users` CHANGE `usr_name` `usr_name` VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; ALTER TABLE `cpanel_users` CHANGE `usr_login` `usr_login` VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
Als je dit hebt gedaan moet je zorgen dat je op alle pagina's waar tekst in de database geplaatst wordt ook utf8 als encoding in de header word meegestuurd. Als je met PHP een XML output doet, stuur dan ook de header mee(!) met:
PHP Code:header('Content-type: text/html; charset=UTF-8') ;
Code:<meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
Ik heb afgelopen paar weken meerdere websites van mezelf en klanten omgezet naar utf8 omdat deze gebruikt maken van de standaard tekenset+collatie (latin1) en dit leverde dus ook al problemen op met foute tekens.
Hier staan overigens nog meerdere tips, mocht het toch met bovenstaande niet verholpen zijn:
http://developer.loftdigital.com/blo...f-8-cheatsheet
En hier is mijn vraag op stackoverflow, als je deze discussie eens naleest kun je waarschijnlijk ook nog e.e.a. leren:
http://stackoverflow.com/questions/5...acters-in-utf8
Aanvullend bericht:
En zoals je op stackoverflow kunt lezen (en al aangaf per PM) even niet vergeten mysql_set_charset('utf8') toe te voegen om de verbinding ook in die tekenset te laatste plaatsvinden. Aangezien de configuratie van php/mysql (welke precies weet ik niet) dit kan overschrijven.Laatst aangepast door Joshua de Gier : 30-05-2011 om 10:24 Reden: Automatisch samengevoegd.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic