Siam Geek

01 May, 2008

ความแตกต่างระหว่าง UTF-8 กับ TIS-620

Posted by: admin In: Uncategorized

หลายคนคงสงสัยว่ามันจะมีชุดตัวหนังสือ UTF-8 (Unicode Transformation Format) ไปทำไม เราก็ยังใช้ TIS-620 ดีอยู่แล้วไม่เน่าไม่เสีย แต่เนื่องจากตอนนี้CMS หลายๆค่ายหันมาใช้(บังคับใช้) UTF-8 ของ Unicode (ผมเองก็ใช้ UTF-8) แล้วจะถ้าคิดใช้โปรแกรมใหม่ๆ CMS ตัวใหม่ๆ ในอนาคตทั้งหมดจะสนับสนุน UTF-8 อย่างเดียว เช่น AppServ เวอร์ชั่นออกมาใหม่จะเป็น UTF-8 MAMBO 4.6 , Joomla! 1.5 ก็จะใช้ชุด(บังคับ) UTF-8 เท่านั้น เมื่อเห็นว่าอนาคตคงจะได้ใช้โปรแกรม ที่มันสนับสนุน ต่อไปนี้ถึงคราวสิ้นยุคทองของชุดตัวหนังสือ TIS-620 แล้ว >__<

Some sample character encodings

หลายคนคงสงสัยว่ามันจะมีชุดตัวหนังสือ UTF-8 (Unicode Transformation Format) ไปทำไม เราก็ยังใช้ TIS-620 ดีอยู่แล้วไม่เน่าไม่เสีย แต่เนื่องจากตอนนี้CMS หลายๆค่ายหันมาใช้(บังคับใช้) UTF-8 ของ Unicode (ผมเองก็ใช้ UTF-8) แล้วจะถ้าคิดใช้โปรแกรมใหม่ๆ CMS ตัวใหม่ๆ ในอนาคตทั้งหมดจะสนับสนุน UTF-8 อย่างเดียว เช่น AppServ เวอร์ชั่นออกมาใหม่จะเป็น UTF-8 MAMBO 4.6 , Joomla! 1.5 ก็จะใช้ชุด(บังคับ) UTF-8 เท่านั้น เมื่อเห็นว่าอนาคตคงจะได้ใช้โปรแกรม ที่มันสนับสนุน ต่อไปนี้ถึงคราวสิ้นยุคทองของชุดตัวหนังสือ TIS-620 แล้ว >__<

UTF-8 เป็นที่มิยมมากเพียงแต่เราไม่ค่อยได้เห็นมันจะๆ จริงๆแล้ว UTF-8 มันอยู่รอบๆเรวเนี้ยครับ อย่างเช่น ชื่อไฟล์ภาษาไทยที่อยู่บน Windows XP นั้นก็เป็น UTF-8 แต่เรายังไม่รู้ตัว, Google (search engine) ก็ทำงานแบบ UTF-8 โดยที่เราไม่รู้ตัว อุปกรณ์ต่างๆ ไม่ว่าจะเป็นมือถือที่เป็น OS Symbian, Pocket PC เค้าก็ใช้ UTF-8 กันแทบทั้งสิ้น CMS หลานตัวก็ค่อยๆเปลี่ยนเป็นชุดตัวหนังสือนี้ MAMBO 4.6 , Joomla! 1.5 ก็จะใช้ชุด(บังคับ) UTF-8 เท่านั้น เมื่อเห็นว่าอนาคตคงจะได้ใช้โปรแกรม ที่มันสนับสนุน ต่อไปนี้ถึงคราวสิ้นยุคทองของชุดตัวหนังสือ TIS-620 แล้ว >__<

Joomla! 1.0.12 ภาษาไทย ตอนนี้มีให้ใช้อยู่สอง version JomlaSiam ซื่งเป็น TIS-620 กับ JoomlaLaiTai ซื่งเป็น UTF-8

ความแตกต่างของ UTF-8 กับ TIS-620 มันอยู่ตรงใหน? ชุดตัวหนังสือ UTF-8 เนี้ยสามารถใช้กับภาษาอะไรก็ได้ โดยเราไม่จำเป็นต้องเปลี่ยน encoding เลย ถ้า website ของคุณมี 2 ภาษา มันก็โชว์ทั้ง 2 ภาษา (Multi language) ระบบ UTF-8 จะเก็บข้อมูล 1 - 4 ไบต์ต่อ 1 ตัวอักษร รายละเอียดอื่นๆ

อ่านเพื่มเติมที่นี่ครับ http://en.wikipedia.org/wiki/UTF-8

แต่ว่าถ้ามองในแง่ลบ UTF-8 ก็ยังไม่ค่อยมีความจำเป็นเท่าไหร่นักและยังเปลืองน้อยที่เก็บข้อมูลกว่าของเดิมถึง 3-4เท่า เพราะ แต่ละตัวจะประกอบไปด้วยชุด นะ แบบนี้ซึ่ง TIS-620 จะเขียนได้ว่า ” นะ ” จะเห็นได้ว่าพื้นที่ในการเก็บข้อมูล ต้องเยอะขึ้นตามไปด้วย แต่ก็มีข้อดีอยู่บ้างในเรื่องการรองรับหลายภาษา (muli-language) และเราสามารถแปลงตัวอักษรจากแบบ UTF-8 มาเป็นแบบ TIS-620 โดยสามารถใช้ฟังก์ชัน iconv ครับ ใครอยากรู้ลองเข้าไปดูคำสั่งนี้แบบเต็มๆได้ที่นี่ครับ http://www.php.net/manual/en/function.iconv.php ส่วนถ้าต้องการ convert จาก UTF-8 มาเป็น TIS-620 ก็ใช้ประมาณนี้ครับ

echo iconv(’UTF-8, ‘TIS-620′, “helloสวัสดีครับ”);

หรือถ้าจาก TIS-620 มาเป็น UTF-8 ก็ประมาณนี้ครับ

echo iconv( ‘TIS-620′, ‘UTF-8′, “helloสวัสดีครับ”);

ซึ่งคำสั่งนี้ถูกหยิบยืมมาจาก library บน unix ที่มีชื่อว่า GNU libiconv ครับ ไปดูรายละเอียดได้ที่นี่ http://www.gnu.org/software/libiconv/ แต่ก่อนที่จะใช้คำสั่งนี้ได้ ต้องไป config ในไฟล์ php.ini โดยให้เอา comment บรรทัดนี้ออกครับ extension=php_iconv.dll และให้เอาไฟล์ php_iconv.dll ไปใส่ไว้ที่ c:\windows\system32 ด้วยครับ แล้ว restart apache ใหม่ ก็จะสามารถใช้ได้ครับ

ฟังก์ชัน iconv ใช้ด้กับ PHP5 เท่านั้นนะครับ

ข้อดีของ UTF-8

  • รองรับได้หลายภาษา แน่นอนที่สุดสำหรับผมเลือกใช้เพราะสาเหตุนี้
  • ภาษาโปรแกรมมิ่งทั้งหลายรองรับ UTF-8
  • เข้ากันได้ดีกับรหัส ASCII
  • การแปลงเป็น Charset ชนิดอื่นไม่ยุ่งยากโดยใช้ ICONV
  • สามารถเรียงลำดับอักษรภาษาไทยได้ 100% ไม่มีผิดเพี้ยน

ข้อเสียของ UTF-8

  • มีปัญหาการทำงานกับฟังก์ชั่นในบางภาษา
  • ภาษาไทยไม่ได้มีเพียงแค่ TIS-620 (มีทั้ง CP874, MacThai)
  • อ้างอิงจาก http://www.gnu.org/software/libiconv/
  • เสียเวลาในการเขียนโปรแกรมแปลงฐานข้อมูล และไฟล์ให้เป็น UTF-8
  • การออกแบบฐานข้อมูล (Field) ต้องไม่ยึดติดกับความกว้างตัวอักษรแบบเดิม เพราะ UTF-8 จะเก็บเป็น Byteสรุปคือต้องขยายความกว้าง Field เกือบทุก Field ที่เป็น Varchar เพื่อรองรับ UTF-8

{mospagebreak}

วิธี convert TIS-620 ให้เป็น UTF-8

ให้ไปทำการดาวน์โหลดไฟล์แปลง tis2utf8.php มาหรือโหลดได้ ที่นี้ หรือ http://www.appservnetwork.com/ เมื่อโหลดมาแล้วให้ทำการแตกไฟล์

แล้วเข้าไปแก้ไขไฟล์ ตามบรรทัดข้างล่างนี้

บรรทัดที่ 23 $dbhost = “localhost”; ใส่ชื่อโฮสฐานข้อมูล
บรรทัดที่ 24 $dbuname = “root”; ชื่อบัญชีผู้ใช้งานฐานข้อมูล
บรรทัดที่ 25 $dbpass = “”; รหัสผ่าน
บรรทัดที่ 26 $dbname = “cmsthai”; ชื่อฐานข้อมูลที่จะทำการแปลง

จากนั้นเมื่อบันทึกเรียบร้อยแล้วก็สั่งให้ Script ทำงาน สั่งตามรูป

หลังจากทำงานเสร็จก็จะมีหน้าแสดงผลดังรูปข้างล่างนี้

กลับมาดูฐานข้อมูลอีกครั้งจะเห็นได้ว่าตัวหนังสือสามารถแสดงผลได้อย่างถูกต้องแล้วครับ

โปรแกรมแปลงระบบเป็น UTF-8

  1. โปรแกรมแปลงฐานข้อมูล MySQL จาก TIS-620, CP874, MacThai เป็น UTF-8
  2. โปรแกรมแปลงไฟล์ จาก TIS-620,CP874,MacThai เป็น UTF-8

ดาวน์โหลดได้จาก : http://prdownloads.sourceforge.net/appserv/appserv-Tis2utf8-1.0.zip?download

1 Response to "ความแตกต่างระหว่าง UTF-8 กับ TIS-620"

1 | Php5 Dll

August 1st, 2008 at 2:49 pm

Avatar

I found your site on faves.com bookmarking site.. I like it ..gave it a fave for you..ill be checking back later

Comment Form



Flickr PhotoStream

Siam Geek News

It's for geeks, by geeks. Welcome all anyhow. I'm also looking for a writer. Let me know if you are interested. หาคนมาช่วยเขียนครับสนใจติดต่อผม ถ้าชอบเว็บผมและอยากเขียน อย่าลืม

Write a Wall

Latest on Wed, 14:01

admin: Hello :)

Write a Wall RSS Feed

» Write a reply...