Devdit
 

PHP json_encode ภาษาไทย

1.5K

บทความนี้สอนใช้คำสั่ง 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 แทน

แก้ไข 1 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ