Dalam pengembangan Android, masalah pengkodean terjadi saat menghubungkan dengan antarmuka sisi server. Data yang diperoleh dari server adalah "/u8bbe/u59071id-/u8bbe/u59071/u540d/u79f0;/u8bbe/u59073id-/u8bbe/u59073/u540d/u79f0;/u8bbe/u59077id-/u7bbe/u8bbe/u59077id-/u7bbe/u8bbe/u59077id-/U797; Antarmuka dikembalikan setelah pengkodean dan kemudian pengkodean melalui JSON_ENCODE dalam fungsi PHP. Ini tidak berfungsi pada decoding klien melalui java.net.urldecoder.decode (), tetapi dapat diterjemahkan secara normal dengan menyalin string di atas ke metode decode (). String yang diterima dikodekan oleh UTF-8 dan tidak berfungsi. Akhirnya, mencari informasi yang relevan secara online untuk menemukan solusi.
1. Fungsi json_encode:
JSON_ENCODE - Pengkodean variabel JSON.
Deskripsi: String JSON_ENCODE ($ value), Mengembalikan bentuk JSON dari nilai nilai .
Parameter: Nilai yang akan dikodekan dapat berupa tipe data apa pun kecuali untuk jenis sumber daya
Fungsi ini hanya dapat menerima data yang dikodekan UTF-8 (Catatan Terjemahan: Mengacu pada Data Karakter/Jenis String)
Nilai pengembalian: Jika pengkodean berhasil, string yang diwakili dalam JSON akan dikembalikan.
2. Klien Decodes di Java:
Metode pertama
String publik unescapeunicode (string str) {stringBuffer b = new StringBuffer (); Pencocokan m = pola.compile ("//// u ([0-9a-fa-f] {4})"). Matcher (str); while (m.find ()) b. lampah ((char) integer.parseint (m.group (1), 16)); return b.tostring (); }Cukup gunakan metode unescapeunicode () untuk memecahkan kode secara langsung.
2. Gunakan paket json_simple.jar untuk diurai
Download Address: //www.vevb.com/softs/455885.html
JSON.Simple adalah perpustakaan kelas Java sederhana untuk parsing dan menghasilkan teks JSON. Itu tidak bergantung pada perpustakaan lain dan memiliki kinerja tinggi.
Objek obj = jsonvalue.parse (jsonstr); return obj.tostring ();
Solusi Sisi Server PHP:
<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><title>php generate json Chinese</title><?php function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { static $recursive_counter = 0; if (++ $ recursive_counter> 1000) {die ('kemungkinan serangan rekursi deep'); } foreach ($ array as $ key => $ value) {if (is_array ($ value)) {// arrayRecursive ($ array [$ key], $ function, $ apply_to_keys_also); } else {$ array [$ key] = $ function ($ value); } if ($ apply_to_keys_also && is_string ($ key)) {$ new_key = $ function ($ key); if ($ new_key! = $ key) {$ array [$ new_key] = $ array [$ key]; Unset ($ array [$ key]); }} $ recursive_counter--; } function json ($ array) {// arrayRecursive ($ array, 'urlencode', true); // print_r ($ array); $ json = json_encode ($ array); return urldecode ($ json); } $ array = array ('name' => urlencode ('php menghasilkan json cina'), 'usia' => 20); Echo Json ($ array); echo '</br>'; echo urlencode ('php menghasilkan json cina'); ?> </body> </html>