mb_ord geeft een code point terug van een enkel teken, niet van een hele string als ik het goed heb. Uiteraard zul je de return value ook moeten gebruiken, en niet alleen simpelweg aanroepen.
Ik zou in eerste instantie werken met een test-tekst in een PHP-bestand (die je als UTF-8 opslaat uiteraard). Op die manier voorkom je mogelijke extra complicaties met vertaalstappen van en naar je database.
Nu wil je teveel tegelijkertijd - deel dit soort zaken op in deelproblemen. Zorg eerst dat het werkt met een statische test-tekst, en voeg dan pas het database-gedeelte toe, waarbij de test-tekst uit de database komt. Hiermee creëer je een stuk meer overzicht voor jezelf en voor de kijkers thuis, want het is nu volstrekt onduidelijk wat er allemaal op de achtergrond gebeurt.
<?php
$string = "Dit is een voorbeeld met een ë enzo.";
utf8_encode($string);
?>
Daar komt dus utf8 uit lijkt me.
Hoe kan ik nu in een keer die hele zin omzetten geschikt voor rtf-bestanden? Want ik wil niet per karakter gaan werken.
<?php
$string = "Dit is een voorbeeld met een ë enzo.";
utf8_encode($string);
?>
Daar komt dus utf8 uit lijkt me.
Nee, niet per se. Het hangt er maar helemaal vanaf hoe het bronbestand waarin die code staat is opgeslagen. Als het bronbestand opgeslagen was als UTF-8 dan leidt utf8_encode() tot een dubbele encodering.
Oh, misschien is het resultaat wel "UTF-8", maar dat kan ook inhouden dat $string door de vleesmolen gaat en hier onleesbare tekst uitrolt.
Alle vormen van tekst hebben een character encoding, zo ook jouw bronbestand. utf8_encode() gaat ook uit van een bepaalde encodering: ISO-8859-1.
Na jaren van MySQLgebruik volgens de standaard instellingen van mijn hostingprovider, bleek na een veiligheidsupdate de karaktercodering fout te gaan. Dankzij de hulp van dit forum (Thomas dacht ik) ben ik uiteindelijk uitgekomen op:
function openDB($table = DB_NAME) {
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, $table);
$db->set_charset('latin1');
$db->query("SET collation_connection = latin1_swedish_ci");
return $db;
}
Dus expliceit aangeven wat de karaktercodering moet zijn.
Bij jou misschien een andere karakterdefinitie.
Een schone string met speciale karakters als ë â õ of schrijf ik weg zonder poespas.
Verder geen gerommel met escaping, html-entities of wat dan ook.
PHPAdmin laat ze netje zien.
En het uitlezen geeft direct in HTML het karakter zoals het bedoeld is.