PDA

Bekijk Volledige Versie : Diakritische tekens, zoals é



Ronald2
02/04/08, 11:17
Hoi,

Ik heb (blijkbaar) geen rechten in andere fora, dus daarom post ik het even hier (mod, verplaatsen no problemo!).

Ik heb mijn site verhuisd naar een andere provider en nu worden diakritische tekens, zoals é niet goed meer weergegeven. Ze worden weergegeven als klein vierkantje.

Weet iemand wat ik eraan kan doen? Het lijkt me een server-side probleem aangezien er niets aan de website is veranderd?

Thx.

Randy
02/04/08, 11:38
Data komt ui de de database? Waarschijnlijk ben je van latin-general-ci (iso 8859-1) naar UTF-8 gegaan of andersom.

vcelis
02/04/08, 11:52
Kan je even de URL van de website geven? Kunnen we eens kijken.

Maak je gebruik van html entities?

Ronald2
02/04/08, 14:55
De database is gekopieerd op Linux niveau, dus alles wat in /var/lib/mysql stond voor deze database staat is gekopieerd naar de nieuwe host, dus het lijkt me sterk dat latin1 naar UTF8 is gegaan (of andersom?).

htmlentities, weet ik niet, want het is een of ander opensource pakket (nieuws submit system ofzo)

Ronald2
03/04/08, 23:05
Mijn httpd.conf bevat (oa) het volgende: AddDefaultCharset UTF-8

En in de HTML van de pagina staat het volgende:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Maar met het woord "café" gaat het nog steeds niet goed, nog steeds een vierkantje voor de "é".

Iemand?

demz
03/04/08, 23:26
mocht je er niet uitkomen..

Kan je altijd nog je html code universeel maken.

http://html.op-het.net/tekst/symbolen.html

vcelis
03/04/08, 23:42
Als je ietswat thuis bent in het werken met php kan je even de source aanpassen en gebruik maken van htmlentities()

http://php.net/htmlentities

Ronald2
04/04/08, 09:13
Nou, htmlentities (en decode) en alles handmatig decoderen dat is echt een laatste optie omdat het een site van een klant betreft.

Het zou gewoon zo moeten kunnen werken, ik lees er genoeg (problemen) over op internet dus een oplossing zou nabij moeten zijn :-)

Zie hier een voorbeeld:

http://www.lukasmedia.nl/test.html
en PHP (geen verschil btw)
http://www.lukasmedia.nl/test.php

De PHP bevat ook nog eens boveaan:


header("Content-type: text/html; charset=utf-8");

dirk939
04/04/08, 11:45
Als de data in je mysql table utf-8 is moet je er ook nog voor zorgen dat php in utf-8 praat met mysql:


set names utf8;
set charset utf8;

Dit kun je ook opnemen in my.cnf.

RAJH
04/04/08, 12:04
De encoding van de tekst op beide pagina's is ISO-8859-1(5), indien je Firefox hebt kun je dit snel zien door de "View -> Character Encoding" te veranderen.

hrodenburg
04/04/08, 12:58
het plaatsen van een meta header heeft geen zin voor zover ik weet. Het staat leuk en is ook vast helemaal w3c-oke, maar voor de interpretatie van je browser helpt het niet. Daar moet je echt bijv de php header meesturen. Dat werkt wel, omdat je browser dan nog niet met parsen begonnen is en bij de meta tag al wel. Volgens mij maakt het ook uit wat de default character set op je server is. Waarschijnlijk zit daar het verschil tussen de oude en de nieuwe server.

Ronald2
04/04/08, 21:18
Ik bovenstaande voorbeelden gebruik ik geen database.

De server (Apache) staat op UTF8 ...

Help :-)

dirk939
05/04/08, 18:37
Wel handig om van nu af aan de broncode van je testbestanden te geven. Maar je probeert een string in iso-8859-x weer te geven als unicode. Zie ook utf8_encode().


header('Content-Type: text/html; charset=UTF-8');
$cafe = "caf\xc3\xa9";
echo $cafe;

Ronald2
06/04/08, 20:53
De source code van het PHP bestand staat hierboven, het is maar een regel, die je zelf ook omschrijft (hierboven).

http://www.lukasmedia.nl/test.php



<?php header("Content-type: text/html; charset=utf-8"); ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</HEAD>

<BODY>
Café <br>

<?php
$cafe = "caf\xc3\xa9";
echo $cafe;
?>

<br>
caf&eacute;

</BODY>
</HTML>

hrodenburg
06/04/08, 23:49
In php.ini heb je zoiezo ook nog de parameter "default_charset". Maar aangezien je pagina in html al het probleem heeft, gaat het al eerder mis.
Kan het soms zijn dat je server helemaal geen utf-8 locale ondersteund? Bij mij kun je dat zien in /etc/locale.gen. Mocht je deze aangepast hebben, moet je nog even locale-gen draaien om het ook daadwerkelijk te "activeren".

UTF-8 en php is volgens mij trouwens nog steeds lastig. Volgens mij moet het met iso-8859-1(5) ook gewoon werken. Die heeft ook ondersteuning voor deze tekens. Ik ben er zelf ook nog niet uit wat je nu het "beste" kunt gebruiken.

Je hebt er verder niet veel aan, maar bij mij werkt het goed: http://linuxbak.nl/charset.html

Zoals eerder al gezegd, de meta tag in je html bepaald niet de manier van renderen van je browser oid. Buiten w3c compliancy heeft het geen waarde.
Deze site vond ik in ieder geval wel nuttige info hebben, misschien kun je er wat mee: http://www.phpwact.org/php/i18n/charsets

Ronald2
07/04/08, 13:28
Thx voor je antwoord. PHP en MySQL even uit je brein schroeven en dan blijft alleen Apache icm. HTML over ... dan is het toch raar dat dit "probleem" niet is op te lossen.

Ofwel, ik kopieer die HTML pagina van jouw server naar mijn server en het werkt niet meer. Probleem is duidelijk, oorzaak wellicht ook, oplossing is gissen maar.

/etc/locale.gen heb ik niet, ik draai CentOS 5 wellicht dat het daar aan ligt? locale-gen kent hij trouwens ook niet.

Ik ga langzaam maar eens beginnen met ombouwen denk ik ..... :-(