PHP json_encode () altıgen biçiminde Çince karakterleri verir

3 Cevap php

Ben basit bir PHP tek boyutlu bir dizi var.

Ben var dökümü yaptığınızda (echo var_dump($a)), ben çıkış olarak bu olsun:

array(3) { [0]=>  string(3) "尽" [1]=>  string(21) "exhausted||to exhaust" [2]=>  string(4) "jin3" }

Ancak, ben bunu json_encode zaman (echo json_encode($a)) Ben bu olsun:

["\u5c3d","exhausted||to exhaust","jin3"]

Geri dönen oluyor onaltılık değeri doğru biridir, ama nasıl bilemiyorum stop bunu bana altıgen vererek. Ben sadece karakteri görüntülemek istiyorum.

I echo mb_internal_encoding(), UTF-8, bunu için kurdum ne döndürür. Ben verilerin hiçbiri berbat olur böylece MB_ işlevlerini kullanmak için tüm benim dize manipülasyon çok dikkatli oldum.

Ben soruna dikkat çekmek değiştirilmiş bir json_encode işlev yazabilirsiniz biliyoruz. Ama burada neler oluyor bilmek istiyorum.

3 Cevap

Davranışı json_encode() mükemmel doğru, ama gereksiz. PHP 5.4, bu JSON_UNESCAPED_UNICODE bayrağı ile devre dışı bırakılabilir.

I json_encode() üzerine aynı soruşturma yaptım ettik. Benim sonuç Ben sadece bırakacaktır böylece you cannot alter the behavior, henüz herhangi bir soruna neden olmamasıdır.

Eğer gerçekten sevmiyorum, preg_replace_callback() json_encode() çıkışında ve UTF-8 karakter geri kod noktası altıgen dönüştürebilirim.

Eğer dizi oluşturmak için mysql kullanıyorsanız kullanabilirsiniz:

mysql_query("SET NAMES utf8");

Bu utf8 bir sonuç yaratacaktır.

Ben denemedim ama utf8_encode bakmak isteyen ve php utf8_decode işlevleri olabilir.