2016-08-02 10 views
1

Ich weiß, dass es viele Fragen dazu gibt. Ich habe viele Dinge ausprobiert, aber ich konnte es nicht beheben. Vielleicht habe ich aufgrund meines begrenzten Wissens die Lösung nicht ausgeführt?json_encode() gibt null für Sonderzeichen zurück

Ich wähle Daten aus MySQL-Datenbank und json_encode() -Funktion darauf verwenden. Dies funktioniert bis auf die Daten, die Sonderzeichen (Türkisch) enthalten. Für diese Werte gibt json null zurück. Wie kann ich das beheben?

Hier ist mein einfacher PHP-Code:

<?php 

require('init.php'); 

$sql="SELECT * FROM tablename;"; 

$result=mysqli_query($con,$sql); 
$response=array(); 

while($row=mysqli_fetch_array($result)){ 


array_push($response,array("X"=>$row["x"],"Y"=>$row["y"])); 

} 

echo json_encode($response); 


?> 

in mysql, sind Spalten auf UTF-8-türkisch. Ich habe versucht, Dinge wie das Setzen von Headern, das Aufrufen einiger Funktionen, das Neuanlegen von PHP-Dateien in der utf8-Codierung usw., aber keiner hat funktioniert.

+0

Haben Sie den mysqli Zeichensatz gesetzt http://php.net/manual/en/mysqli.set-charset.php – RiggsFolly

+2

Mögliche Duplikate von [Json \ _encode Funktion: Sonderzeichen] (http://stackoverflow.com/ Fragen/20694317/JSON-Encode-Funktion-Sonderzeichen) –

+0

Hallo Riggs. Nein, das habe ich noch nicht versucht. Muss ich das in meinem Verbindungsskript (init.php) schreiben? – user6650650

Antwort

1

Die Funktion mysqli_set_charset in meinem Verbindungsskript löste das Problem. Konnte bei ähnlichen Fragen nicht gefunden werden. Danke an Benutzer "RiggsFolly".

-1

Hinzufügen TRUE: json_decode($string, TRUE); Das wird utf8 Zeichen statt Unicode Escape-Sequenzen (wie \u00d6).

Sie benötigen utf8 (oder utf8mb4) in der Verbindung, in der Tabelle und im HTML. Siehe this.