Null in Array (special characters)
Goeiemorgen allemaal,
Momenteel zit ik met een probleem waar ik niet uit kan komen, ik haal namelijk met PHP data op uit mijn database en voer deze doormiddel van een array, maar op het moment dat ik json_encode uitvoer krijg ik een NULL terug bij data waar speciale tekens zoals ', /, - inzitten.
hier is een voorbeeld code:
ik heb al vanalles geprobeerd maar ik krijg gewoon elke keer weer een NULL terug, ik hoop dat iemand van jullie mij hierbij kan helpen
Momenteel zit ik met een probleem waar ik niet uit kan komen, ik haal namelijk met PHP data op uit mijn database en voer deze doormiddel van een array, maar op het moment dat ik json_encode uitvoer krijg ik een NULL terug bij data waar speciale tekens zoals ', /, - inzitten.
hier is een voorbeeld code:
ik heb al vanalles geprobeerd maar ik krijg gewoon elke keer weer een NULL terug, ik hoop dat iemand van jullie mij hierbij kan helpen
Zou een probleem kunnen zijn met de character encoding
Ik zou utf8 willen aanraden
Ik zou utf8 willen aanraden
Oke en hoe los ik dat precies op?
Met phpMyAdmin je databasetabellen en tekstkolommen instellen op utf8_unicode_ci.
Je HTML pagina's beginnen met
Na de connection met je database (met mysqli_connect()) de UTF-8 characterset instellen:
Bij het versturen van json vanuit een php script eerst even een header meesturen:
Je HTML pagina's beginnen met
Na de connection met je database (met mysqli_connect()) de UTF-8 characterset instellen:
Code (php)
Bij het versturen van json vanuit een php script eerst even een header meesturen:
Gewijzigd op 16/05/2015 11:25:26 door Frank Nietbelangrijk
Warning: mysql_set_charset() expects parameter 1 to be string, resource given in /home/blabla/db.php on line 10
lijkt me niet goed dit
Toevoeging op 16/05/2015 11:40:25:
lijkt me niet goed dit
Toevoeging op 16/05/2015 11:40:25:
Code (php)
1
2
3
4
5
2
3
4
5
$dbConnect = mysql_connect($dbHost, $dbUser, $dbPass)
or die("Er is een fout opgetreden, neem aub contact op met [email protected]");
mysql_select_db($dbName);
mysql_set_charset($dbConnect, "utf8");
or die("Er is een fout opgetreden, neem aub contact op met [email protected]");
mysql_select_db($dbName);
mysql_set_charset($dbConnect, "utf8");
Gewijzigd op 16/05/2015 11:40:42 door Tim Kampherbeek
mysql_* is deprecated!
Dus let daar op. Ga gewoon over op mysqli_.
Voor jouw fout nu: mysql_set_charset("utf8", $dbConnect);
Zie de handleiding: http://php.net/manual/en/function.mysql-set-charset.php
Dus let daar op. Ga gewoon over op mysqli_.
Voor jouw fout nu: mysql_set_charset("utf8", $dbConnect);
Zie de handleiding: http://php.net/manual/en/function.mysql-set-charset.php
Heb het opgelost bedankt!
json_encode() verwacht dat de input UTF-8 gecodeerd is. Als je een ander coderingsschema gebruikt (bv. Latin1) dan moet je het eerst omzetten naar UTF-8, anders kan je dit soort dingen krijgen. Om te weten waar het precies fout gaat kan je de functie json_last_error() gebruiken.
Iets waar je soms rekening mee wilt houden is dat PHP zelf niet naar encoderingsschema's kijkt, het verwacht dat de PHP scripts in Latin1 zijn. Sommige extenties kunnen alleen overweg met een subset van Unicode, alleen de BMP of soms ook de SMP, maar verder niet. Dat kan problemen geven met de overige 14 planes waarin ook de emoji zitten.
Voor wie niet helemaal bekend is met encoding zie: http://kunststube.net/encoding
Iets waar je soms rekening mee wilt houden is dat PHP zelf niet naar encoderingsschema's kijkt, het verwacht dat de PHP scripts in Latin1 zijn. Sommige extenties kunnen alleen overweg met een subset van Unicode, alleen de BMP of soms ook de SMP, maar verder niet. Dat kan problemen geven met de overige 14 planes waarin ook de emoji zitten.
Voor wie niet helemaal bekend is met encoding zie: http://kunststube.net/encoding




