UTF-8 vanuit een MySQL database naar het scherm krijgen

Status
Niet open voor verdere reacties.

ariecade

Gebruiker
Lid geworden
5 jun 2019
Berichten
146
Hallo,

Ik heb via een formulier een bepaald veld naar een kolom ingevoegd:

PHP:
$voornaam = mysqli_real_escape_string($con, $_POST['voornaam']);

Dit zorgde ervoor dat b.v. de voornaam "André" in de tabel werd gevoegd.

De collatie van de database en de desbetreffende tabel is utf8mb4_unicode_ci en de kolom voornaam in deze tabel heeft ook utf8mb4_unicode_ci als collatie

Op de PHP pagina staat in de <head> <meta charset="UTF-8"> </head>

In de tabel staat ook gewoon André in de kolom voornaam.

Maar als ik via onderstaande code de voornaam wilt tonen dan krijg ik i.p.v. een é een vraagteken in een zwart vlak:

PHP:
    $query = "SELECT * FROM spelers";
    if ($result = mysqli_query($conn, $query)) {
        while ($row = mysqli_fetch_array($result)) {
          echo $row['voornaam'] . "<br />";
        }
    }

Enig idee wat ik over het hoofd ziet?
 
Is de database geconverteerd uit een niet UTF-8-charactersettings database?
 
Je bet dus met een schone lei begonnen in een UTF-8 omgeving? Of juist niet?

Geef je de juiste characterencoding ook mee bij je database-connectie? En zijn je bestanden ook UTF-8 encoded?
Als er maar iets afwijkt aan de encoding krijg je al 'wybertjes' met vraagtekens te zien, of andere ongein.
 
Laatst bewerkt:
collatie van de serververbinding is utf8mb4_unicode_ci

Wat bedoel je met "En zijn je bestanden ook UTF-8 encoded?" <meta charset="UTF-8">?

Het heeft volgens mij ooit goed gestaan maar ik heb deze website verhuisd naar een andere provider.

De database is geexporteerd en weer geimporteerd in de nieuwe MySQL omgeving en volgens de phpinfo.php is de default charset UTF-8

Dus weet even niet wat ik nu over het hoofd ziet ............:eek:
 
De bestanden moeten zelf ook UTF-8 encoded zijn. Dit kan je checken door de in het old-skoel Notepad in te laden, en te kiezen voor 'Save as...'
Dan moet de codering op UTF-8 staan.

Ik ben bang dat de database juist als UTF-8 is geëxporteerd terwijl die dat niet is, en dan heb je dus eigenlijk rotzooi in je data. Ik meen dat phpMyAdmin daar goed in is.
Hopelijk heb je nog een backup.

Ikzelf backup altijd via de commandline op de server. Dat gaat altijd goed....
 
Dat truukje met Notepad leverde in ieder geval ook UTF-8 als codering op.

Ik heb het origineel nog bij de oude provider staan maar weet niet hoe ik dat via Putty moet exporteren en weer importeren.

Misschien kasn jij mij op weg helpen want ik ben niet zo'n commandline deskundige ....:eek:
 
Heb je toegang tot de server met PuTTY?
 
Dat dacht ik wel maar was even in de war met een andere server, ik ga dit even uitzoeken of dat het mogelijk is
 
Hoe heb je de database nu geëxporteerd vanwege de verhuizing?

*PHP4U gaat komende week eens een conversie naar UTF-8 met utf8mb4_unicode_ci collatie eens uittesten op zijn site die nog ISO-8859-1 gebruikt.
Volgens mij is het een kwestie van de database dumpen 'zoals het is', en die met iconv converteren naar UTF-8, en dan weer importeren, en dan de collatie aanpassen.
of misschien dat al eerder. Een kwestie van uitproberen... ;)
 
Laatst bewerkt:
ik kan bij de nieuwe provider met Putty inloggen, ik heb de vraag bij de oude provider nog uit staan.

Ik heb in de oude omgeving via PHPMyAdmin alle tabellen geexporteerd als SQL en in de nieuwe omgeving deze weer met PHPMyAdmin geimporteerd.
 
phpMyAdmin... iewl! Die is niet bijster intelligent, kan ik je vertellen.
Ik ontwijk die liever... :p

Als je met PuTTY kan inloggen, en ingelogd bent kan je op deze manier je database exporteren:
Code:
mysqldump -u JOUW_USERNAME -p JOUW_DATABASENAAM > db_backup.sql

Even op [enter] drukken, password invoeren, even wachten, en voila......
Je hebt een dump gemaakt.

Als je die via FTP/SFTP/SCP hebt overgekopieerd, dan kan je die als volgt weer inladen:
Code:
mysql -u JOUW_USERNAME -p JOUW_DATABASENAAM < db_backup.sql

Je moet wel eerst de lege database aanmaken.
 
De SSH toegang tot de oude provider is eindelijk gelukt en heb dus via PuTTy een dump kunnen maken en deze ook weer ingelezen in de nieuwe omgeving:thumb:

Helaas heb ik nog steeds last van 'wybertjes met vraagtekens' bij karakters zoals een é :shocked:

Heb je misschien nog een suggestie waar het aan kan liggen?
 
Ik vermoed dat je nieuwe hosting standaard op UTF-8 draait?

- Wat voor encoding geeft de dump aan met dit?
Code:
file jouw_dump.sql
- Wat is de default encoding op je nieuwe server, als je deze query uitvoert?
Code:
SHOW VARIABLES LIKE  'char%';
- Heb je ook de characterset in code aangepast?
- En heb je jouw collaties aangepast?

Overigens wil ik deze week (als het lukt) ook nog even een poging wagen om hier met mijn ISO-8859-1 encoded database met latin1_swedish_ci collatie om te zetten naar utf8mb4_unicode_ci. Dus ik vind dit toch een mooi topic om in de gaten te houden en bij te werken met mijn ervaringen.
 
Laatst bewerkt:
Ik vermoed dat je nieuwe hosting standaard op UTF-8 draait?

Daar ga ik wel vanuit, kan ik dat ergens nakijken of moet ik dat navragen?

- Wat voor encoding geeft de dump aan met dit?
Code:
file jouw_dump.sql

vimexx file.png

- Wat is de default encoding op je nieuwe server, als je deze query uitvoert?
Code:
SHOW VARIABLES LIKE  'char%';

Vimexx charset.png

Als ik trouwens in PHPMyAdmin kijk naar de Variabelen dan zie ik dit staan:

Vimexx server charset.png
 
Kan je jouw domp niet converteren naar UTF-8, en deze opnieuw inladen?
Code:
iconv -f ISO-8859-15 -t UTF-8 db_backup.sql
 
Kan je jouw domp niet converteren naar UTF-8, en deze opnieuw inladen?
Code:
iconv -f ISO-8859-15 -t UTF-8 db_backup.sql

Ik heb dit op de nieuwe server uitgevoerd maar klopt het dan dat de datum van het db_backup.sql bestand niet aangepast wordt?
 
Volgens mij niet, maar maakt dat uit? Het is toch een dump die je maakt en daarna weer kan wissen :).
 
je past dan toch de bestaande db_backup dump aan om deze om te zetten nar UTF-8? Dan zou je ook een nieuwe datum van het sql bestand mogen verwachten ;)
 
Hoeft niet per sé.
Je past enkel de encoding aan. En de datum van de laatste wijziging is eenvoudig te manipuleren.

Met de file command kan je eenvoudig controleren wat de encoding is.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan