Hoi allemaal,

Wederom een nieuw onderwerp. Diakritische tekens. Hoe weer te geven?

Mijn <b>collatie</b> instelling:
database en alle tabellen staan op utf8_general_ci ingesteld.

In mijn hearder.php staat als allereerste de code, die ik overigens include:

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


en in mijn head section de code:

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


Maar bij mij blijven de diakritische tekens als ? weergegeven worden. Als je op het forum zoekt gaat het alle kanten uit en wordt het allemaal heel verwarrend. Er is enorm veel over te lezen maar ik lees tussen de regels ook door dat een oplossing niet zo 1,2,3 voor handen is.
Er is geen man over boord of zo hoor maar zou mooi zijn als de tekst op mooie manier wordt weergegeven.

Draai op een normale Windows laptop mijn localhost op een Wampserver
ben niets aan het repareren... deze tekens zijn ontstaan toen ik collatie heb ik gewijzigd naar utf8mb4_unicode_ci

wanneer ik de code

<?php
    header ('Content-type: text/html; charset=utf8mb4_unicode_ci');
?>


weer weghaal verdwijnen ook die tekentjes weer maar heb ik mijn ? weer terug.

Het maakt ook niet uit of ik de colltie van utf8mb4_unicode_ci naar utf8mb4_generaal_ci... effect is hetzelfde
Om Thomas nog even te quoten voor de duidelijkheid:

Thomas van den Heuvel op 14/07/2019 19:23:07

Collatie is niet hetzelfde als character encoding. (ook charset)

Dus laat die charset voor PHP lekker zoals het UTF-8 is.
Thomas van den Heuvel op 14/07/2019 23:11:05

[quote="- Ariën - op 14/07/2019 21:43:17"]Met een ? vermoed ik dat je collatie niet klopt, en dat je een teken gebruikt die deze collatie niet kent. Gebruik eens: utf8mb4_general_ci

Nee, er is echt ergens iets mis met de data zelf, of hoe je deze benadert, of allebei. Dit heeft niets met collation te maken.
[/quote]
Als ik zo lees was dat toch wel de oorzaak. Maar dan ga ik niet van een geruit vraagteken uit. Ik meen dat je dat enige tijd geleden nog zo iets hebt gezegd in een topic hier. Het probleem met de vraagtekens die de topicstarter omschrijft vond alleen in MySQL plaats.
Mja, en dat heeft van doen met de character encoding. Collation heeft op geen enkele manier invloed op (on)juiste weergave van tekst. Collation houdt zich enkel bezig met het vergelijken en sorteren van teksten.

De beschikbare/geldige/toepasbare collations hangen overigens van de character encoding af. Je kunt uiteraard geen collation gebruiken die niet aansluit op je character encoding... Dat lijkt mij duidelijk.

EDIT: okay laten we even van aanpak veranderen want dit is weer zo'n vraag waarbij er heeeeeeeeeeeelemaal aan het einde iets misgaat, terwijl er nog tig tussenstappen zijn. Tijd om het een en ander uit te gaan sluiten.

Gebruik de volgende code om het stuk tekst met kuren op te hoesten:
<?php
// debugging modus
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');

// hulpfunctie voor escapen html-functionaliteit
function escape($in) {
    return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}

// je zou kunnen volstaan met de metatag, maar nogmaals, ten overvloede
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>UTF-8 test</title>
</head>

<body><?php
$db = new mysqli('host', 'username', 'password', 'database');
$db->set_charset('utf8');

$res = $db->query('haal hier de bewuste tekst op');
$row = $res->fetch_assoc();

// geef de tekst als platte tekst weer
echo escape($row['kolomnaam']);
?>[end]</body>
</html>

NB deze snippet zou je voor meer debugging-werkzaamheden kunnen gebruiken...

Mocht de tekst niet goed worden weergegeven dan zul je de oorzaak en oplossing in de database moeten zoeken. Er is dan eerst een verdere analyse nodig van de tabelstructuur en de data in deze tabellen om zinnige uitspraken te kunnen doen over wat er aan de hand is.
Thomas van den Heuvel op 15/07/2019 02:10:03

Mja, en dat heeft van doen met de character encoding. Collation heeft op geen enkele manier invloed op (on)juiste weergave van tekst. Collation houdt zich enkel bezig met het vergelijken en sorteren van teksten.

De beschikbare/geldige/toepasbare collations hangen overigens van de character encoding af. Je kunt uiteraard geen collation gebruiken die niet aansluit op je character encoding... Dat lijkt mij duidelijk.

EDIT: okay laten we even van aanpak veranderen want dit is weer zo'n vraag waarbij er heeeeeeeeeeeelemaal aan het einde iets misgaat, terwijl er nog tig tussenstappen zijn. Tijd om het een en ander uit te gaan sluiten.

Gebruik de volgende code om het stuk tekst met kuren op te hoesten:
<?php
// debugging modus
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');

// hulpfunctie voor escapen html-functionaliteit
function escape($in) {
    return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}

// je zou kunnen volstaan met de metatag, maar nogmaals, ten overvloede
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>UTF-8 test</title>
</head>

<body><?php
$db = new mysqli('host', 'username', 'password', 'database');
$db->set_charset('utf8');

$res = $db->query('haal hier de bewuste tekst op');
$row = $res->fetch_assoc();

// geef de tekst als platte tekst weer
echo escape($row['kolomnaam']);
?>[end]</body>
</html>

NB deze snippet zou je voor meer debugging-werkzaamheden kunnen gebruiken...

Mocht de tekst niet goed worden weergegeven dan zul je de oorzaak en oplossing in de database moeten zoeken. Er is dan eerst een verdere analyse nodig van de tabelstructuur en de data in deze tabellen om zinnige uitspraken te kunnen doen over wat er aan de hand is.




Sorry voor de late reactie maar was met vakantie.. wilde dit weer oppakken.... mbv deze snippet... pats boem tjakka... heb ik dit kunnen oplossen....

Thanks Thomas.....

Reageren