หน้าเว็บ

วันศุกร์ที่ 20 พฤษภาคม พ.ศ. 2554

วิธีตรวจสอบ encoding ของไฟล์บน Ubuntu

ในกรณีที่เราอยากรู้ว่าไฟล์นั้นมี encoding เป็น UTF-8, TIS-620 ฯลฯ นั้นสามารถทำได้โดยใช้คำสั่งนี้

file -bi filename

ระบบจะบอกประเภทไฟล์ และ encoding ของไฟล์มาให้ เช่น

text/x-php; charset=utf-8

หมายถึงประเภทไฟล์คือไฟล์ที่เป็นข้อความประเภท php และมี encoding เป็น utf-8 เป็นต้น


ระบบที่ทดสอบ
OS: Ubuntu 11.04

วันจันทร์ที่ 22 มิถุนายน พ.ศ. 2552

tomcat แสดง encoding เพี้ยน เมื่อส่ง request

เหตุการณ์คือ ระบบ dspace พัฒนาขึ้นนั้น จะมีกล่องสำหรับ search คำ แต่พอผู้ใช้กรอกภาษาไทย แล้วกดปุ่ม search นั้น ระบบกลับแปลง encoding ออกมาเพี้ยน ส่งผลให้หาผล search ไม่เจอด้วย โดยปัญหานี้ต้องแก้ที่ตัว config ของ Tomcat

วิธีแก้
ในไฟล์ server.xml (อยู่ที่ $TOMCAT_HOME/conf/server.xml โดย $TOMCAT_HOME แล้วแต่ระบบ เช่นของผมอยู่ที่ /usr/share/tomcat5.5) ให้ดูที่บรรทัด แล้วเพิ่ม attribute เข้าไปดังนี้
connector port="8080" usebodyencodingforuri="true".......
หรือ
connector port="8080" uriencoding="UTF-8"........
เสร็จแล้วลอง restart tomcat ใหม่อีกรอบเป็นอันใช้ได้

ระบบที่ทดสอบ

OS: Ubuntu Desktop 9.04
Tomcat: Apache Tomcat 5.5 (via apt-get)


ที่มา
http://antikoala.wordpress.com/2007/02/21/tomcat-55-encoding-problem/

Special Thank
@blckct

วันอาทิตย์ที่ 10 สิงหาคม พ.ศ. 2551

แก้ปัญหา พิมพ์ subject ภาษาไทยไม่ได้ใน PHPList

อาการคือ เวลาส่งเมล์ แล้วถ้าพิมพ์หัวข้อ subject พอกด save จะไม่สามารถแสดงภาษาไทยได้ถูกต้อง

สำหรับคนที่ใช้ PHPList โดยไม่ได้เปลี่ยนภาษา (หรือเป็นภาษาอังกฤษ) สามารถไปแก้ที่ไฟล์ /lists/texts/englins.inc

โดยให้แก้จาก
$strCharSet = 'ISO-8859-1';
ให้เป็น
$strCharSet = 'UTF-8';
ก็จะสามารถใช้งานได้

ส่วนในตัว body นั้นก็ให้ไปตั้งค่า html charset และ text charset ใน configure ให้เป็น UTF-8 ทั้งคู่

**เพิ่มเติม
ตอนแรกใช้งานได้ แต่กลับมีปัญหาที่ตัว ภ. (ภ สำเภา) ไม่สามารถแสดงได้ถูก
วิธีแก้เพิ่มคือ ไปที่ไฟล์ admin/mysql.inc
ตรงฟังก์ชัน function Sql_Query($query,$ignore = 0) {
ให้เติม mysql_query("SET NAMES 'utf8'"); เข้าไป
function Sql_Query($query,$ignore = 0) {
mysql_query("SET NAMES 'utf8'");
if (isset($GLOBALS['lastquery'])) {
unset($GLOBALS['lastquery']);
}

แต่ว่าวิธีนี้คือตัวฐานข้อมูลก็ต้องตั้ง ให้เป็น utf-8 ด้วย

ระบบที่ทดสอบ
PHPList: 2.10.5