Problemen met Karakters

Auteur: thorn (van het WB forum)

Veel vragen in het WB forum zijn gerelateerd aan het verkeerd weergeven van bepaalde karakters in de inhiud van de website of in het menu. Dit probleem komt mede door het slechte support van UTF-8 bij WB versies tot v2.6.5. Een van de meest interessante mogelijkheden sinds WB v2.6.6 is de UTF-8 ondersteuning.

Definitie: karakterset en Collatie

Hieronder staan de defenities van de termen karakterset en collatie, welke in dit hoofstuk regelmatig gebruikt worden.

  • Karakterset: een set met karakters of de encodering van karakters, zoals latin1, cp1251, utf8, ...
  • Collatie: bepaald de sorteervolgorde voor strings en andere functies (bijv. latin1_swedish_ci, utf8_unicode_ci, ...). De collatie wordt toegewezen aan een bepaalde karakterset. De instelling "latin1_swedish_c1" benodigd dus de karakterset "latin1" (als U de collatie insteld via phpmyadmin, zal de karakterset automatisch ingesteld worden)

Standaard instellingen (mogelijke valkuilen en oplossingen)

Als U problemen hebt met het juist weergeven van karakters, zou U allereerst moeten overwegen om een upgrade uit te voeren naar de laatste beschikbare WB versie. Vanaf WB v2.6.6 en verder, dient men de volgende instelling te doen via de WB backend: Instellingen -> Bekijk geavanceerde opties -> Karakterset -> utf-8. Andere karaktersets werken ook, maar het aanhouden van utf-8 zal veel problemen voorkomen. Ook als de laatste Website Baker versie al is geïnstalleerd, kunnen de volgende problemen nog voorkomen.

Fout 1: Duitse umlauts of bijv. Cyrillische karakters worden verkeerd weergegeven

Reden #1: De karakterset ontbreekt in het template.

Check of de volgende regels zijn opgenomen in het bestand index.php van uw template:

<meta http-equiv="Content-Type" content="text/html; charset=<?php 
if(defined('DEFAULT_CHARSET')) { echo DEFAULT_CHARSET; } else
{ echo 'utf-8'; }?>" />

Reden # 2: Apache verstuurd PHP pagina's als ISO-8859-1

Als U reden #1 kunt uitsluiten, check dan de karakterset die gebruikt wordt door de browser. Als de browser ingesteld staat op een nadere waarde dan utf-8 (bijv. ISO-8859-1) dient men de browser-instellingen te wijzigen. Als U de browser wilt forceren om utf-8 te gebruiken voor alle pagina's, plaats dan een .htaccess bestand in de WB root folder. Dit vereidt het gebruik van een Apache webserver.

<Files .htaccess>
order allow,deny
deny from all
</Files>
php_value default_charset UTF-8

Bovenstaande uitdrukking forceert de Apache webserver om alle php gegenereerde pagina's te versturen met utf-8 encodering.

Fout 2: Sommige karakters worden fout weergegeven


Als U gebruik maakt van Cyrillisch, is bijv. "И" en "ш" beïnvloedt, voor Grieks kan bijv. "ή" verkeerd weergegeven worden.

Reden: Standaard karakterset wordt gedefinieerd via my.ini of my.cnf of de gebruiker heeft een andere karakterset gekozen voor de database

De standaard karakteset kan worden gewijzigd door de MYSQL-bestanden my.ini of my.cnf. Als er geen karakterset is gedefinieerd in deze bestanden, zal latin1 gebruikt worden als standaard karakterset door MYSQL. Als U een andere karakterset kiest dan latin1 bij het aanmaken van de database (bijv. met phpmyadmin), dient U deze waarde als standaard karakterset toe te voegen. Met andere woorden, de karakterset die gebruikt wordt tijdens het aanmaken van de database moet overeenkomen met de standaard karakterset en vice versa. Als de karakterset van de database en de standaard karakterset niet overeenkomen, zullen karakters verkeerd weergegeven worden.

Als uw service-provider een andere standaard karakterset definieert dan latin1, door gebruik te maken van my.ini, staan de volgende opties tot uw beschikking.

  1. vraag uw service provider om de instelling te wijzigen naar latin1
  2. karakterset van de WB database dient gewijzigd te worden naar de standaard karakterset die gedefinieerd is door uw service provider

Opmerking:

Optie 2 vereist het handmatig aanmaken van de WB database door gebruik te maken van bijv. phpmyadmin. Het is niet mogelijk om de installatieroutine van de WB installatie-wizard te gebruiken, omdat WB latin1 als standaard gebruikt. U dient zich er van te verzekeren dat de karakterset van alle DB-tabellen ingesteld is als de standaard karakterset.