วันเสาร์ที่ 2 พฤษภาคม พ.ศ. 2552

การตั้งค่า MySQL ให้ใช้ "ภาษาไทย" ได้ร่วมกับ ASP.NET

วันนี้จะมาดูเรื่องเกี่ยวกับการ Set ภาษาไทยของ MySQL ที่ใช้ร่วมกับ ASP.NET กันครับ หลังจากที่นั่ง Set อยู่นานแสนนานกว่าจะได้ ลองมาหลายวิธีเหมือนกัน เรียกว่า Search หากันหัวบานเลยทีเดียว

สำหรับการ Config นี้จะเป็นการ Config สำหรับ MySQL version 5 ขึ้นไปนะคับ ซึ่งจากเดิมที่เวอร์ชันเก่าๆจะใช้ character set เป็น tis_620 และใช้ collation เป็น tis_620_ci ก็จะเปลี่ยนมาใช้เป็น utf8 ทั้งหมด

ซึ่งขันตอนการ set ที่ผมได้ลองมาก็มีหลายวิธี ไม่รู้ว่าจะครอบคลุมหมดรึเปล่า เพราะแต่ละคนก็เจอปัญหาไม่เหมือนกัน หากใครมีส่วนไหนเพิ่มเติมก็แนะนำได้นะคับ เรามาดูกันครับ

อันนี้ทำตั้งแต่ช่วงติดตั้ง หรือหลังจากติดตั้ง MySQL และมา Config ทีหลัง ให้ทำการเลือกที่ Manual Select Default Character Set แล้วเลือก utf8 ตามภาพครับ


อันต่อไปก็ทำใน web.config ครับ ตามนี้ครับ

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="th-TH" uiCulture="th-TH"/>

ส่วนต่อไปเป็นการ set ใน MySQL ครับ บางครั้งอาจ set มาเป็นอย่างนี้อยู่แล้ว แต่เพิ่มความมั่นใจลองเช็คดูก่อนก็ไม่เสียหาย จากรูปด้านล่างเป็นตัวอย่างจาก MySQL front ครับ

ตัวอย่างคำสั่งในการ Set Character Set
SET character_set_client = utf8

ต่อไปคือกำหนดค่า character set ของ database เป็น utf8 ครับ ด้วยคำสั่ง
ALTER DATABASE web CHARACTER SET utf8
และสุดท้ายเวลา Create Table ควรกำหนด Character Set ให้กับ Table ด้วย เช่น
CREATE TABLE table_name(col1 datatype, col2 datatype, ...
) DEFAULT CHARSET=utf8;
หากยังไม่ได้ก็ให้ลองเช็คแต่ละ column ดูว่าเป็น utf8 รึเปล่า หากไม่ก็สามารถเปลี่ยนได้ด้วยคำสั่ง
ALTER TABLE table_name MODIFY COLUMN col_name datatype character set utf8
เพียงเท่านี้ก็น่าจะใช้ภาษาไทยบน MySQL ร่วมกับ ASP.NET ได้อย่างไม่มีปัญหาแล้วครับ วันนี้ก็ขอจบเพียงเท่านี้ครับ หากใครมีคำแนะนำอะไรเพิ่มเติมก็โพสแนะนำได้นะครับ

ปล: คราวหน้าจะมาเขียนเรื่อง "MyISAM เร็วกว่า InnoDB จริงหรือ?" แล้วคอยติดตามกันครับ หุหุ

3 ความคิดเห็น:

  1. รออ่านตอนหน้าอยู่อ่ะเต้ "MyISAM เร็วกว่า InnoDB จริงหรือ?"

    ตอบลบ
  2. อย่าลืมทำ connect string เป็น utf 8 ด้วยนะคับ

    charset=utf8;

    เพราะบางครั้งอาจเกิดกรณีภาษาใน asp.net กับ mysql คนละภาษากันฮะ

    หวัดดีเต้ อิอิ

    ตอบลบ
  3. ขอบคุณมากครับ อู๋ ที่ช่วยแนะนำ

    ได้เพิ่มมาอีกข้อแระ อิอิ

    ตอบลบ