บทความนี้สอนใช้คำสั่ง json_encode ด้วย PHP เพื่อแปลงข้อมูลภาษาไทยให้อยู่ในรูปแบบของ JSON โดยการกำหนดค่า JSON_UNESCAPED_UNICODE ในคำสั่ง json_encode ซึ่งส่งผลให้ข้อมูลภาษาไทยจะถูกแสดงเป็นภาษาไทยไม่ถูกแปลงเป็นรหัส escape
ตัวอย่าง วิธีกำหนดค่า JSON_UNESCAPED_UNICODE ใน json_encode
<?php
$colors = array(
array("id" => 1, "name" => "ส้ม"),
array("id" => 2, "name" => "แดง"),
array("id" => 3, "name" => "ขาว"),
array("id" => 4, "name" => "ดำ"),
);
$json_data = json_encode($colors, JSON_UNESCAPED_UNICODE);
echo $json_data;
?>
[{"id":1,"name":"ส้ม"},{"id":2,"name":"แดง"},{"id":3,"name":"ขาว"},{"id":4,"name":"ดำ"}]
จากโค้ดสร้างตัวแปร colors พร้อมค่าข้อมูลภาษาไทย จากนั้นแปลงเป็น json ด้วยคำสั่ง json_encode ของ PHP และกำหนดค่า JSON_UNESCAPED_UNICODE ในคำสั่ง json_encode เพื่อทำให้ข้อมูล Unicode ไม่ถูกแปลงเป็นรหัส escape ทำให้ข้อมูลภาษาไทยจะแสดงเป็นภาษาไทยไม่ถูกแปลงเป็นรหัส escape
ตัวอย่าง ถ้าไม่กำหนดค่า JSON_UNESCAPED_UNICODE ใน json_encode
<?php
$colors = array(
array("id" => 1, "name" => "ส้ม"),
array("id" => 2, "name" => "แดง"),
array("id" => 3, "name" => "ขาว"),
array("id" => 4, "name" => "ดำ"),
);
$json_data = json_encode($colors);
echo $json_data;
?>
[{"id":1,"name":"\u0e2a\u0e49\u0e21"},{"id":2,"name":"\u0e41\u0e14\u0e07"},{"id":3,"name":"\u0e02\u0e32\u0e27"},{"id":4,"name":"\u0e14\u0e33"}]
ตัวอย่างนี้จะเหมือนกับตัวอย่างแรก แต่ไม่ได้กำหนดค่า JSON_UNESCAPED_UNICODE ในคำสั่ง json_encode ของ PHP ทำให้เมื่อลองพิมพ์ค่า json ที่เป็นภาษาไทย ผลลัพธ์คือไม่แสดงเป็นภาษาไทย ไม่สามารถอ่านได้ ภาษาเพี้ยนเพราะ Unicode ถูกแปลงเป็นรหัส escape แทน
สรุป บทความนี้สอนกำหนดค่า JSON_UNESCAPED_UNICODE ในคำสั่ง json_encode ของ PHP เพื่อทำให้ข้อมูลภาษาไทย แสดงเป็นภาษาไทย ไม่เพี้ยนเพราะไม่ถูกแปลงเป็นรหัส escape แทน