Arabische Zeichen in JSON-Decodierung [duplizieren]

8
%Vor%

Als Ergebnis dieses Codes lautet die Ausgabe: "\u0628\u0633\u0645 \u0627\u0644\u0644\u0647" , während es etwa "بسم الله" sein sollte. Arabische Zeichen werden codiert, wenn sie JSON-codiert sind, während dies bei der Youtube-API nicht der Fall ist: Ссылка

Sie können auf Youtube sehen, dass arabische Zeichen richtig angezeigt werden. Was könnte mein Fehler sein?

TIPP: Ich arbeite an einer API & lt; Das Beispiel dient nur der Verdeutlichung.

    
Mohamed Said 20.02.2013, 12:56
quelle

4 Antworten

20

"\u0628\u0633\u0645 \u0627\u0644\u0644\u0647" und "بسم الله" sind in JSON gleichwertig.

PHP verwendet standardmäßig Unicode-Escapes anstelle von Literalen für Multibyte-Zeichen.

Sie können mit JSON_UNESCAPED_UNICODE anders angeben (vorausgesetzt, Sie verwenden PHP 5.4 oder höher).

%Vor%     
Quentin 20.02.2013, 13:04
quelle
2

Das ist die korrekte JSON-codierte Version der UTF-8-Zeichenfolge. Es gibt keine Notwendigkeit, es zu ändern, es stellt die korrekte Zeichenkette dar. Zeichen in JSON können auf diese Weise ausgeblendet werden.

JSON kann UTF-8-Zeichen direkt darstellen, wenn Sie möchten. Seit PHP 5.4 haben Sie die Möglichkeit, das JSON_UNESCAPED_UNICODE -Flag so einzustellen, dass es rohe UTF-8-Zeichenfolgen erzeugt:

%Vor%

Aber das ist nur eine Vorliebe, es ist nicht notwendig.

    
deceze 20.02.2013 13:05
quelle
2

Beide Formate sind gültige und äquivalente JSON -Strings:

%Vor%

Wenn Sie die uncodierte Version bevorzugen, fügen Sie einfach das JSON_UNESCAPED_UNICODE -Flag hinzu:

%Vor%

Dieses Flag erfordert PHP / 5.4.0 oder höher.

    
Álvaro González 20.02.2013 13:06
quelle
2

Nun, wie bereits erwähnt, spielt es keine Rolle, da beide Strings äquivalent sind. Was Sie jedoch tun sollten, ist sicherzustellen, dass die codierte Zeichenfolge decodiert wird, bevor sie an eine Ausgabe gesendet wird.

%Vor%

Oder weil JSON höchstwahrscheinlich mehr als nur eine einzige Zeichenfolge enthält:

%Vor%     
itsid 20.02.2013 13:37
quelle

Tags und Links