ในการพัฒนา Android ปัญหาการเข้ารหัสเกิดขึ้นเมื่อเชื่อมต่อกับอินเทอร์เฟซฝั่งเซิร์ฟเวอร์ ข้อมูลที่ได้จากเซิร์ฟเวอร์คือ "/U8BBE/U59071ID-/U8BBE/U59071/U540D/U79F0;/U8BBE/U59073ID-/U8BBE/U59073/U540D/U79F0; อินเทอร์เฟซจะถูกส่งคืนหลังจากการเข้ารหัสจากนั้นเข้ารหัสผ่าน JSON_ENCODE ในฟังก์ชัน PHP มันไม่ได้ทำงานกับการถอดรหัสของลูกค้าผ่าน java.net.urldecoder.decode () แต่สามารถถอดรหัสได้ตามปกติโดยการคัดลอกสตริงด้านบนลงในวิธีการถอดรหัส () สตริงที่ได้รับจะถูกเข้ารหัสโดย UTF-8 และไม่ทำงาน ในที่สุดการค้นหาข้อมูลที่เกี่ยวข้องออนไลน์เพื่อค้นหาวิธีแก้ปัญหา
1. ฟังก์ชั่น JSON_ENCODE:
JSON_ENCODE - การเข้ารหัส JSON ของตัวแปร
คำอธิบาย: String JSON_ENCODE ($ value), ส่งคืนรูปแบบ JSON ของ ค่า
พารามิเตอร์: ค่า ที่จะเข้ารหัสอาจเป็นประเภทข้อมูลใด ๆ ยกเว้นประเภททรัพยากร
ฟังก์ชั่นนี้สามารถยอมรับข้อมูลที่เข้ารหัส UTF-8 เท่านั้น (หมายเหตุการแปล: หมายถึงข้อมูลประเภทอักขระ/สตริง)
ค่าส่งคืน: หากการเข้ารหัสสำเร็จสตริงที่แสดงใน JSON จะถูกส่งคืน
2. ลูกค้าถอดรหัสใน Java:
วิธีแรก
สตริงสาธารณะ unescapeunicode (string str) {stringbuffer b = new Stringbuffer (); matcher m = pattern.compile ("///// u ([0-9a-fa-f] {4})"). matcher (str); ในขณะที่ (m.find ()) b.append ((char) integer.parseint (m.group (1), 16)); กลับ B.ToString (); -เพียงใช้เมธอด unescapeunicode () เพื่อถอดรหัสโดยตรง
2. ใช้แพ็คเกจ json_simple.jar เพื่อแยกวิเคราะห์
ดาวน์โหลดที่อยู่: //www.vevb.com/softs/455885.html
JSON.Simple เป็นไลบรารีคลาส Java ที่เรียบง่ายสำหรับการแยกวิเคราะห์และสร้างข้อความ JSON มันไม่ได้ขึ้นอยู่กับห้องสมุดอื่น ๆ และมีประสิทธิภาพสูง
Object obj = jsonvalue.parse (jsonstr); return obj.toString ();
โซลูชันด้านเซิร์ฟเวอร์ PHP:
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> php สร้าง json chinese </title> <? php function arrayrecursive (& $ array if (++ $ Recursive_counter> 1000) {ตาย ('การโจมตีซ้ำลึกที่เป็นไปได้'); } foreach ($ array เป็น $ key => $ value) {ถ้า (is_array ($ value)) {// arrayrecursive ($ array [$ key], $ function, $ appl_to_keys_also); } else {$ array [$ key] = $ function ($ value); } if ($ appl_to_keys_also && is_string ($ key)) {$ new_key = $ function ($ key); if ($ new_key! = $ key) {$ array [$ new_key] = $ array [$ key]; unset ($ array [$ key]); }} $ Recursive_counter--; } ฟังก์ชั่น json ($ array) {// arrayrecursive ($ array, 'urlencode', true); // print_r ($ array); $ json = json_encode ($ array); return urldeCode ($ json); } $ array = array ('name' => urlencode ('php สร้าง json chinese'), 'อายุ' => 20); Echo Json ($ ARRAY); echo '</br>'; echo urlencode ('PHP สร้าง JSON จีน'); ?> </body> </html>