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.

- Ariën - op 18/10/2024 18:29:19

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");
?>
OK.
Dan ga ik daar eens mee werken en kiek'n wâ't wôt.
Maar niet vanavond nog.

[size=xsmall]Toevoeging op 18/10/2024 19:29:38:[/size]

Hihi

Toch geprobeerd.

En ... JA, het werkt!!!
Bedankt

[size=xsmall]Toevoeging op 18/10/2024 19:34:10:[/size]

Ik had jouw code ietsje aangepast aan de connect-code die ik al had. Zó

//verbinden met database
    $db = mysqli_connect("localhost", "ikusr", "mijnwachtwoord", "mijndatabase");
    $db->set_charset("utf8mb4");
    $db->query("SET NAMES utf8mb4 COLLATE utf8mb4_general_ci");
Fijn dat het werkt. Soms is het iets heel simpels.... ;-)
Toch is er een maar-tje.

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 vrees dat die al anders opgeslagen zijn.
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


Probeer het zo :

 $land = $rij_my['land'];
if ($land == "F") {$Land = "Frankrijk";}
if ($land == "D") {$Land = "Duitsland";}
if ($land == "I") {$Land = "Itali&euml;";}
if ($land == "NL"){$Land = "Nederland";}
if ($land == "GB"){$Land = "Groot Britanni&euml;";}
if ($land == "B") {$Land = "Belgi&euml;";}


https://www.w3schools.com/charsets/ref_utf_diacritical.asp
een tekstbestand, en een php-script is ook dat, dan kun je ook daarbij aangeven in welke tekenset dat moet worden opgeslagen.

dat is dus hier kennelijk de verkeerde set.

check eens of jouw editor je een tekenset last kiezen

Reageren