Hallo,

Ik heb al een paar dagen een raar probleem met speciale characters die moeten omgezet worden in json..

Al mijn characters worden correct in PHP weergegeven en als ik alles query naar en van men database worden ze nog steeds correct weergegeven. Alleen als ik ze wil omzetten met json_encode() krijg ik NULL als resultaat , en met JSON_last_error() krijg ik 5 als resultaat (malformed utf8 characters). Dus wat heb ik al geprobeerd. Alles eerst proberen in utf8 omzetten. Dan krijg ik bv 'Belgi/u022' en wanneer ik json_decode wil doen , krijg ik dan dit 'België'. Ik heb echt geen idee wat er misloopt ?

Hier is mijn volledige code:

<?php

$mysqli = new mysqli('*****', '*****', '*****', 'test2');
if(mysqli_connect_errno())
{
trigger_error('Fout bij verbinding: '.$mysqli->error);
}

$land = 'België';


echo 'land voor querry:'.$land;
echo'<br>';


$mysqli->query("INSERT INTO testtabel (naam) VALUES ('$land')");

$output = $mysqli->query("SELECT naam FROM testtabel WHERE id ='0'")->fetch_object()->naam;

//$output = $output->fetch_assoc();

echo 'land na querry:'.$output;
echo'<br>';

//hier loopt het mis.

$output2= json_encode(utf8_encode($output));
echo'<br>';
echo json_decode($output2);

?>

groetjes.
Als eerste zou ik ervoor zorgen dat de connectie met de database correct is. Als je namelijk geen correcte gegevens uit je database haalt, krijg je het ook nooit meer goed op de pagina. Bepaal dus eerst de charset voor de database voor je je query draait: http://www.php.net/manual/en/mysqli.set-charset.php

Als het goed is krijg je dan correcte (utf8) gegevens en hoef je ook die utf8_encode() niet meer te gebruiken. Vervolgens is het misschien handig om ook nog in je output naar de browser een correcte charset mee te geven in een header.
Mijn probleem is eindelijk opgelost.
Ik had eerst Erwin zijn oplossing uitgeprobeerd , maar hielp niet , maar toen ik verder keek, ik gebruik voor mijn PHP scripts Notepat++. en voor één of andere reden codeert hij alles standaard in ANSI, dus heb ik eens al mijn scripts omgezet naar utf8 , en alles werkt perfect.


Dankje voor de snelle reactie :).

Reageren