Ik weet dat hierover al eerder vragen gesteld zijn, maar toch wil ik mijn specifieke situatie even voorleggen.
Ik heb een website met grote database.
- Apache
- Clientversie van database: libmysql - 5.5.68-MariaDB
- PHP-uitbreiding: mysqli Documentatie
- PHP-versie: 5.4.16
Deze draait prima, maar binnenkort moet de website verhuizen naar een nieuwere server.
Ik heb een exacte kopie van de database op de nieuwe server gezet. Daar zijn de eigenschappen:
- Apache
- Cliëntversie van database: libmysql - mysqlnd 8.0.30
- PHP-uitbreiding: mysqli Documentatie curl Documentatie mbstring Documentatie
- PHP-versie: 8.0.30
Iets wat op de oude server prima werkt, gaat op de nieuwe fout.
In sommige tabellen komen letters met accenten voor, zoals in het woord "één". Deze speciale tekens staan in de database ook werkelijk als é opgeslagen (en niet met de html-code é).
Op de huidige (oude) website worden de speciale tekens keurig afgebeeld.
Op de nieuwe website veranderen deze tekens in een zwart vierkantje met een wit vraagteken erin.
DATABASE (oud en nieuw):
- Collatie van de serververbinding: utf8mb4_unicode_ci
- Collatie van de database: latin1_swedish_ci
- alle tekstvelden in een tabel: Collatie latin1_swedish_ci
In de html-header van de website (oud en nieuw):
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
Een veel gehoorde tip (ook op dit forum) is: je moet alles instellen op UTF-8 en dan komt dit probleem niet voor.
Maar voordat ik me in dat soort veranderingen stort, zou ik willen weten waarom ik op de oude website met dezelfde instellingen de juiste tekens zie en op de nieuwe website niet.
Is er ergens een instelling voor de nieuwe server/database, die ervoor kan zorgen dat de é uit de database ook weer een é op de website wordt? Dat zou mij enorm helpen.
3.401 views