Tags:

ผมแวะไปอ่านข่าวเก่าหลาย ๆ ข่าว แล้ว Emoji หายไป เปลี่ยนเป็นเครื่องหมาย ? แทน

เป็นไปได้หรือเปล่าถ้าจะปรับปรุงระบบให้สามารถเก็บ Emoji ได้?

Get latest news from Blognone
By: rattananen
AndroidWindows
on 7 August 2023 - 09:04 #1291143

เดาว่าเป็นที่ field collation ใน database
น่าจะใช้ utf8 ไม่ถึง 4 bytes

ถ้าเปลี่ยนเป็น 4 bytes ก็ควรจะเก็บได้ครับ

By: suriyan2538 on 8 August 2023 - 13:44 #1291262
suriyan2538's picture

Drupal7 ตัวเก่าๆ ตอนนั้นยังไม่รองรับ 4 byte UTF-8 ครับ ถ้าข่าวไหนมีอิโมจิ จะทำให้บันทึกไม่ได้ ทางทีมงานเลยอาจจะแก้ไขโดยการตั้งค่าระบบให้ระบบเปลี่ยนจากตัวอิโมจิที่ระบบตรวจพบเป็นตัว ? แทนมั้งครับ (เพราะเว็บผมที่เป็น D7 ก็แก้ไขปัญหาด้วยวิธีนี้)

แต่ Drupal 7 ตัวหลังๆ ก็รองรับอิโมจิแล้ว เพียงแต่ในข่าวเก่าๆ ระบบมันได้บันทึกเนื้อหาที่มีตัวอิโมจิเป็น ? แล้ว เลยไม่สามารถแก้ไขอะไรได้แล้ว

คาดว่าน่าจะเป็นแบบนี้แหละครับ

By: rattananen
AndroidWindows
on 8 August 2023 - 14:11 #1291266 Reply to:1291262

คิดว่าเป็นที่ MySql น่ะครับ ตอนนี้ utf8 มันเป็น Alias ของ utf8mb3
เวลา create table หรือ set charset ด้วย utf8 มันจะไปเลือก utf8mb3 มา set ให้
เวลา save Emoji มันเลย truncate byte ที่ 4 (Emoji ส่วนใหญ่ใช้ 4 bytes) ของ character ทิ้ง กลายเป็น unknow

ถ้าจะแก้แบบยั่งยืนก็เปลี่ยน field ที่ save เป็น utf8mb4 อะไรก็ได้ ก็หายแล้วครับ (เฉพาะ record ใหม่นะ)

code ใหม่ๆ เลยใช้ utf8mb4_xxxxxx เจาะจงแทน utf8 แทน