Posts Tagged ‘JavaScript’

ปัญหาภาษาไทย TIS-620 กับ AJAX

Wednesday, December 23rd, 2009

พอดีเมื่อวานนี้มีเพื่อนถามมาทาง MSN ว่าเว็บมีปัญหาใช้ภาษาไทยกับ AJAX ไม่ได้ คือส่งภาษาไทยไปแล้ว อ่านไม่ออกใน MySQL
ส่วนตัวนั้นมีประสบการณ์เกี่ยวกับปัญหาภาษาไทยมาบ้าง ถึงจะไม่มาก แต่ก็พอจะมั่นใจได้ว่า AJAX ไม่น่ามีปัญหากับภาษาไทย แต่มันไม่ใช่กับกรณีนี้

มาดูกันที่ส่วนประกอบต่างๆกันก่อน

Web Page (TIS-620) + AJAX (TIS-620) <–> PHP(TIS-620) <–> MySQL (TIS-620)

ดูๆจากข้างต้นก็ไม่น่าจะมีปัญหาอะไร

อย่างแรกผมเอา FireBug จับ XHR ดูก่อนเลย เป็น HTTP Post และพบว่าอ่านไทยไม่ออกครับ ผมแปลกใจมากๆ ทั้งๆที่ Header บอกว่า charset เป็น TIS-620
ลองถาม Google ดูจึงพบว่า AJAX มีปัญหากับ TIS-620 จริงๆด้วย เพราะมันส่งเป็น UTF-8 (จริงๆมีวิธีเปลี่ยนแต่ค่อนข้างยุ่งยาก)

ดังนั้นภาพข้างบนจึงผิด จริงๆต้องเป็นแบบนี้

Web Page (TIS-620) + AJAX (UTF-8) <–> PHP(UTF-8) <–> MySQL (TIS-620)

และสิ่งที่เราต้องแก้ก็คือแปลง UTF-8 ให้เป็น TIS-620 ที่ Server Side Script ซึ่งในที่นี้คือ PHP โดยการเพิ่ม code นี้เพื่อแปลงข้อความก่อน save ลง MySQL

$msg= iconv(‘UTF-8′, ‘TIS-620′, $msg);

สรุป

- ปัญหานี้จะเกิดต่อเมื่อใช้ Post Method เพราะส่วน Body จะถูก Encode เป็น UTF-8 ส่วน Get ไม่มีปัญหาเพราะข้อความต่อท้ายไปกับ URL แทน

- ถ้าไม่มีความจำเป็นต้องใช้ TIS-620 จริงๆ ผมขอแนะนำเหมือนทุกครั้ง คือใช้ UTF-8 จะดีกว่า ใช้ได้กับหลายภาษา ไม่ใช่แค่ภาษาไทย และ open source script ส่วนใหญ่เขียนมา support UTF-8 อยู่แล้ว

Multi programming language on Eclispe

Tuesday, February 6th, 2007

Eclipse ของเครื่องผมเองครับ ใช้เขียน Java, J2EE, PHP, Flex, GWT และแน่นอนพวกภาษาพื้นฐานของเวปอย่าง HTML, JavaScript, CSS ก็เขียนบน Eclipse เช่นกัน

โดย Plug-in หลักๆที่ผมใช้มีดังนี้
Eclipse Web Tools สำหรับ J2EE, JavaScript, CSS, HTML
PHPEclipse สำหรับ PHP
Subclipse สำหรับ SVN
Googlipse สำหรับ GWT (Google Web Toolkit)
Flex Builder 2 สำหรับ Flex
ป.ล. จริงๆเปิด Web Browser ใน Eclipse (มากับ Web Tools) เพื่ออัพเดท blog ยังได้เลยนะ อิอิ

choopong_eclipse.PNG

How to prevent Missing Image in HTML

Monday, February 5th, 2007

ปกติหากเราใช้ Tag Img แล้วรูปไม่มีอยู่จริงก็จะเป็นแบบด้านล่างนี้

วิธีการง่ายๆหากรูปที่ต้องการจะ load จริงๆไม่มี ก็ให้ไป load รูป default ขึ้นมาแทนดังนี้ (ทดสอบบน IE6 และ Firefox2)

<img onerror="this.src=’default.jpg’;" src="target.jpg">

ถ้าจำไม่ผิดเมื่อก่อนสามารถใช้ lowsrc แทน onerror ด้านบนได้ (นานมากแล้ว ผมจำไม่ได้จริงๆว่า HTML เวอร์ชั่นเท่าไหร่)

หวังว่าคงมีประโยชน์นะครับ :D