Problem Summary
From Redmine:
รบกวนช่วยตรวจสอบอีเมลจาก Suggestions pending approval ให้หน่อยนะครับ
ข้อความเป็นภาษาต่างดาวครับ
Root Cause Analysis
ปัญหาเกิดจากการเข้ารหัสภาษา (Encoding) ซ้ำซ้อนในสคริปต์ opac/opac-suggestions.pl ในขั้นตอนการบันทึกคำแนะนำ (Suggestion) ใหม่จากหน้า OPAC
ในไฟล์ /srv/punsarn/koha/opac/opac-suggestions.pl (บรรทัดที่ 196-198) มีการใช้ฟังก์ชัน Encode::encode("utf8", ...) กับข้อมูลฟิลด์ต่างๆ เช่น ชื่อเรื่อง (Title), สำนักพิมพ์ (Publisher) และบันทึก (Notes):
# โค้ดเดิมที่มีปัญหา
$suggestion->{$suggest} = Encode::encode( "utf8", $scrubber->scrub( $suggestion->{$suggest} ) );
เนื่องจากระบบ Koha ได้ถูกกำหนดค่าให้รองรับ UTF-8 อยู่แล้ว (ผ่าน use CGI qw( -utf8 ); และการตั้งค่าฐานข้อมูล) การสั่ง encode ซ้ำในขั้นตอนนี้ทำให้ตัวอักษรภาษาไทยถูกแปลงเป็น "Bytes" (UTF-8 bytes) แทนที่จะเป็น Unicode string
เมื่อฟังก์ชัน Koha::Suggestion->store() ถูกเรียกใช้งาน ระบบจะทำการส่งอีเมลแจ้งเตือน NEW_SUGGESTION ทันที โดยนำชุดข้อมูลที่เป็น Bytes นี้ไปใส่ใน Template ของอีเมล ส่งผลให้ข้อความในอีเมลแสดงผลเป็น "ภาษาต่างดาว" (Double Encoding)

