Door
Guus Wiegerinck
op 15-10-2024 12:15
gewijzigd op 15-10-2024 12:18
7.000 views
Sinds ik een nieuwe WAMP heb geïnstalleerd, worden letters als ä, bijv in Märklin, weergegeven als een zwart ruitje met vraagteken. In de tabel staat echter gewoon een ä. Is dit een collatieprobleem en hoe los ik dit op?
Volgens mij zal dat met andere letters met accenten ook wel zo zijn, moet het alleen nog zien.
De tabel staat in utf8_general_ci, de (nieuwe) database in utf8mb4_unicode-ci.
Als ik daar utf8_general_ci van maak, verandert er aan de weergave niets: de ä blijft een zwart ruitje met vraagteken.
Na afsluiten en mySqlAdmin weer openen, staat er als collatie weer utf8mb4_unicode-ci. Wat doe ik niet goed?
Mysql: 3306 staat helemaal bovenin scherm.
Dan is het raadzaam om mijn tip op te volgen, en utf8mb4 te gebruiken in je PHP-script.
En alle tabellen de collatie utf8mb4 te geven, toch?
Dat begrijp ik niet goed. Ik heb de tabellen de collatie zusenzo gegeven, maar wat bedoel je met de zin om die collatie in mijn php-script te gebruiken. Betekent dat ik ergens op regel 1 of 2 moet vermelden dat collatie collatie X is?
En wat denk je van mijn conclusie alle tabellen collatie utf8mb4 te geven?
(Ik ben een amateur, ooit begonnen met een boek voor beginners "Basiscursus PHP5". Daarop autodidactisch verder geborduurd tot ik tevreden was met een bepaald resultaat. En elke keer als ik iets meer wou, snuffelde ik rond op internet zoals dit forum, of bij mensen die iets meer thuis waren in de ict. Nu vertoont het resultaat gebreken en moet ik kennis opdoen om die gebreken te verhelpen. Dit als toelichting van waaruit ik "knutsel" met php.)
Ik bedoelde dus de manier die Adoptive Solution in zijn voorgaande bericht al liet zien.
<?php
// etc...
$db->set_charset("utf8mb4");
$db->query("SET NAMES utf8mb4 COLLATE utf8mb4_general_ci");
?>
Alle scripts zijn aangepast, maar er zijn twee scripts waar het tóch niet goed gaat. Ik vind dat vreemd.
Daar krijg ik tóch bijv. Belgi? of Groot Britanni?, en in het andere script M?rklin of ??n.
Het is in twee scripts, in andere gaat het wél goed.
Toch een andere collatie nodig?
Het ligt niet aan het feit dat ik de code in een inc-bestand heb gezet en oproep met include, dat maakt niet uit,
Ik denk dat ik het al weet. Deze woorden komen niet uit de database, maar heb ik zo als ze zijn in het script gezet. Bijv.:
$land = $rij_my['land'];
if ($land == "F"){$Land = "Frankrijk";}
if ($land == "D"){$Land = "Duitsland";}
if ($land == "I"){$Land = "Italë";}
if ($land == "NL"){$Land = "Nederland";}
if ($land == "GB"){$Land = "Groot Britannië";}
if ($land == "B"){$Land = "België";}
En uit het andere script:
<p>
Hieronder staat een opsomming van locomotieven zoals die is opgenomen in de zgn "Loklist" van Märklin MS2<br>
Het maximaal aantal locomotieven dat opgenomen kan worden in die lijst is 40.<br>
Voor elke nieuwe lok boven de 40 die aan de lijst wordt toegevoegd, wordt er één andere zonder waarschuwing verwijderd.
</p>
Dus hier wél de html-code toepassen.
Zo zie je maar, je probleem aan iemand anders voorleggen helpt om zelf tot een oplossing te komen
[size=xsmall]Toevoeging op 19/10/2024 17:20:55:[/size]
Guus Wiegerinck op 19/10/2024 17:14:05
Ik denk dat ik het al weet. Deze woorden komen niet uit de database, maar heb ik zo als ze zijn in het script gezet. Bijv.:
$land = $rij_my['land'];
if ($land == "F"){$Land = "Frankrijk";}
if ($land == "D"){$Land = "Duitsland";}
if ($land == "I"){$Land = "Italë";}
if ($land == "NL"){$Land = "Nederland";}
if ($land == "GB"){$Land = "Groot Britannië";}
if ($land == "B"){$Land = "België";}
En uit het andere script:
<p>
Hieronder staat een opsomming van locomotieven zoals die is opgenomen in de zgn "Loklist" van Märklin MS2<br>
Het maximaal aantal locomotieven dat opgenomen kan worden in die lijst is 40.<br>
Voor elke nieuwe lok boven de 40 die aan de lijst wordt toegevoegd, wordt er één andere zonder waarschuwing verwijderd.
</p>
Dus hier wél de html-code toepassen.
En inderdaad, nu staat het er zoals het hoort,
Zo zie je maar, je probleem aan iemand anders voorleggen helpt om zelf tot een oplossing te komen
Als je 100 procent zeker bent dat je latin1 gebruikt, en wilt overstappen op UTF-8 (utf8mb4), dan is dit script een handige omzettool. Maak van te voren wel een backup van de huidige staat.