วิธีแก้ปัญหา PHP ใช้คำสั่ง json_encode ไม่แสดงภาษาไทย
PHP developer ที่เจอปัญหาเรื่องภาษาไทยเมื่อใช้คำสั่ง json_encode ขอบอกไว้เลยว่าแก้ปัญหาไม่ยากง่ายยิ่งกว่าปอกกล้วยเข้าปากซ่ะอีก
json_encode ในภาษา PHP เป็นฟังก์ชันที่ใช้แปลงค่าที่เก็บอยู่ใน Array ให้ออกมาเป็น json แต่ถ้าข้อมูลที่เก็บอยู่ใน Array เป็นภาษาไทยจะมีปัญหานิดหน่อยแต่อย่ากังวลไปเพราะ PHP ได้เตรียมวิธีแก้ปัญหาไว้แล้ว
ตัวอย่างการใช้คำสั่ง json_encode แบบทั่วไป
<?php
$fruit=array('ส้ม','มะม่วงแรด','ลำใย','ทุเรียน');
$str_json=json_encode($fruit);
ผลลัพธ์ที่ได้คือได้ json มาถูกต้องแต่ว่าภาษาไทยจะถูก encode อ่า่นไม่ออกดังตัวอย่างด้านล่าง
วิธีแก้ปัญหาภาษาไทยคือให้เพิ่ม JSON_UNESCAPED_UNICODE เป็นพารามิเตอร์ตัวที่สองเข้าไป ซึ่งตัวพารามิเตอร์ JSON_UNESCAPED_UNICODE สามารถใช้ได้ตั้งแต่ PHP เวอร์ชั่น 5.4.0 ขึ้นไป
<?php
$fruit=array('ส้ม','มะม่วงแรด','ลำใย','ทุเรียน');
$str_json=json_encode($fruit, JSON_UNESCAPED_UNICODE);
เราก็จะได้ json ที่เป็นภาษาไทยที่สวยงามดังนี้น่ะจ๊ะ
["ส้ม","มะม่วงแรด","ลำใย","ทุเรียน"]
คำสั่ง json_encode ของ PHP มีพารามิเตอร์ 3 ตัวแต่การใช้งานโดยทั่วไปที่แอดมินใช้มากสุดแค่ 2 ตัวแรกซึ่งพารามิตเตอร์ตัวที่สองสามารถใส่ได้มากกว่า 1 ค่าได้น่ะ ดังตัวอย่างโค้ดด้านล่าง
json_encode($var_array, JSON_NUMERIC_CHECK | JSON_UNESCAPED_UNICODE)
ใครสงสัยอะไรก็เข้าไปอ่านคู่มือการใช้งานคำสั่ง json_encode ตามลิงค์นี้เพิ่มเติมได้เลย https://www.php.net/manual/en/function.json-encode.php