Saya memiliki skrip PHP yang berhubungan dengan berbagai bahasa. Sayangnya, setiap kali saya mencoba menggunakan json_encode
, setiap output Unicode dikonversi ke entitas heksadesimal. Apakah ini perilaku yang diharapkan? Apakah ada cara untuk mengubah output menjadi karakter UTF-8?
Berikut ini contoh dari apa yang saya lihat:
MEMASUKKAN
echo $text;
KELUARAN
База данни грешка.
MEMASUKKAN
json_encode($text);
KELUARAN
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
JSON_UNESCAPED_UNICODE tersedia di PHP Versi 5.4 atau yang lebih baru.
Kode berikut untuk Versi 5.3.
DIPERBARUI
html_entity_decode
sedikit lebih efisien daripadapack
+mb_convert_encoding
.(*SKIP)(*FAIL)
melompati backslash itu sendiri dan karakter yang ditentukan olehJSON_HEX_*
bendera.sumber
\\
. Versi\\
yang lebih baru lebih diprioritaskan daripada\u
.Anda suka mengatur charset dan unescaped unicode
sumber
Salah satu solusinya adalah dengan terlebih dahulu menyandikan data dan mendekode dalam file yang sama:
sumber
Ini adalah solusi gabungan saya untuk berbagai versi PHP.
Di perusahaan saya, kami bekerja dengan server yang berbeda dengan berbagai versi PHP, jadi saya harus mencari solusi yang berfungsi untuk semua.
Kredit harus diberikan kepada Marco Gasi & abu . Solusi untuk PHP> = 5.4 disediakan dalam json_encode docs.
sumber
Fungsi raw_json_encode () di atas tidak menyelesaikan masalah saya (karena beberapa alasan, fungsi panggilan balik menimbulkan kesalahan pada server PHP 5.2.5 saya).
Tetapi solusi lain ini benar-benar berhasil.
https://www.experts-exchange.com/questions/28628085/json-encode-fails-with-special-characters.html
Kredit harus diberikan kepada Marco Gasi . Saya hanya memanggil fungsinya alih-alih memanggil json_encode ():
sumber
sumber
Karena Anda bertanya:
Solusi lain adalah dengan menggunakan utf8_encode .
Ini akan menyandikan string Anda ke
UTF-8
.misalnya
sumber
json_encode()
satu - satunya yang berfungsi dengan data yang dikodekan UTF-8.mungkin Anda bisa mendapatkan jawaban untuk mengubahnya di sini: cyrillic-karakter-in-phps-json-encode
sumber