วิธีแก้ปัญหา PHP ใช้คำสั่ง json_encode ไม่แสดงภาษาไทย


🕑 4 ม.ค. 2563
วิธีแก้ปัญหา 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 อ่า่นไม่ออกดังตัวอย่างด้านล่าง

php คำสั่ง 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

เทพควิช-lnwquiz