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
[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.
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....