PDA

Bekijk Volledige Versie : Probleem met tekens in een duitse site.



Robbie_
23/04/07, 12:28
Beste webhostingtalkers,

Ik heb een probleem met een duitse site op een CentOS4 server met apache + mysql.

Op deze site draait een admin gedeelte waarmee de gebruiker artikeltjes toevoegd.

als ze nu tekens zoals ë ü ä in het artikel zetten dan krijg je deze tekens te zien op website ü i.p.v. ë ü ä

het leek mij een probleem met codering maar dat is niet zo.

weet iemand hier een oplossing voor ?

alvast bedankt! :rolleyes:

wonko
23/04/07, 12:55
Dit is een probleem met je charsets, dit kan op verschillende niveaus zitten. Controleer eerst en vooral je data in je database, als deze correct is (kijk welke charsets en collates er op je tabellen staan!!).

Als die correct is, controleer dan even op je webserver en/of je applicatie welke charset doorgestuurd wordt naar de browser (kan je verifieren in je browser, bij pagina-info). Zorg dat dit juist staat.

Het lijkt op het weergeven van UTF-8 ge-encodeerde data in een ISO-8859-x charset (de à is heel typisch daarvoor). Ofwel dien je dus je charset dat je meegeeft (via webserver/applicatie) aan te passen, ofwel dien je je data in je db te converteren (permanent, of via een iconv/... call in je scripting).

Robbie_
23/04/07, 16:56
Bedankt voor de snelle reactie :-)

ik zit even ingelogd op phpmyadmin en als ik dan de tabel selecteer dan zie ik bij collates Collatie latin1_swedish_ci staan

als ik naar de database zelf kijk zie ik.

MySQL Karakterset: UTF-8 Unicode (utf8)
MySQL verbindingscollatie: UTF8_unicode_ci

--

in de pagina zelf staat hetvolgende;
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">



dus het moet fout gaan als je iets naar de database saved.

ik ben een beetje ten einde raad.

groet,

CharlieRoot
23/04/07, 17:40
Het zit in de Apache configuratie file, heb ik ook gehad met Apache2 i.c.m. php5/mysql.

Even kijken daar, zit een file bij voor default charset en die staat niet goed.

ol4pro
24/04/07, 00:10
&Auml; = Ä
&auml; = ä
&Euml; = Ë
&euml; = ë
&Uuml; = Ü
&uuml; = ü


Bovenstaande gebruiken ipv ë ü ä, tenmisnte lijkt mij dat je dat op dit mometn niet doet.

En indien je met een admin interface werkt is een functie als onderstaande misschien wel handig.



/* untested, but.. should work */
function convert($text) {
$search = array ('/Ä/',
'/ä/'); /* ect.. */
$replace = array ('&Auml;',
'&auml;'); /* ect.. */
return preg_replace($search, $replace, $text);
}
# insert_into_site_content(FIELD, VALUE=convert($sometext);

wonko
24/04/07, 08:10
Al dat geknoei is niet nodig, zorg er gewoon voor dat je charsets overal gelijk zijn. Als je database in iso-8859-x (latin1 is dit) staat, en je data die erin zit, ziet er goed uit (select 'content' from 'tabel' where iets = ietsanderwaardedatazit), dan is dat al stap 1. Als dit niet juist, is, dan dien je je DB eerst en vooral in UTF-8 te zetten (zonder je data aan te passen, want die is al UTF-8. Zorg daarna dat je apache in ISO-8859-x stuurt door bvb "AddDefaultCharset xxxxx" te gebruiken.

Als je PHP gebruikt, en je headers worden daar opgebouwd, dan gebruik je een extra header-regeltje (header('Content-Encoding: xxxxx');).

Even wat bijlezen over charsets kan geen kwaad.