ปัญหาที่พบจนเป็นปัญหา classic คือ เวลาดึงฐานข้อมูลขึ้นมาจาก MySQL จะเจอแต่เครื่องหมายแบบนี้
???????????????????????????????????????????
?????????????????????????????????????????
เขาบอกว่า ไม่ใช่ปัญหา แต่เราต้องทำความเข้าใจใหม่กับ เวอร์ชั่นใหม่นี้
ดังนั้น การ Query ข้อมูลที่เป็น TIS-620 จะต้องเพิ่มส่วนนี้เข้าไปใน code ทุกครั้งที่มีการ connect
mysql_db_query($dbname,"SET NAMES tis620");หรือจะทำให้ Default ของ MySQL ทั้งหมดเป็น TIS-620 ไปเลย ก็ให้แก้ไขที่ my.cnf ดังนี้
ในส่วนของ [client] ให้เพิ่มแต่ ในทางกลับกัน ผู้ที่ใช้ UTF-8 ก็จะมีปัญหาเวลา query เพราะเรา set ทุกอย่างให้เป็น tis620 ไปซะหมด
default-character-set = tis620
ในส่วนของ [mysqld] หลัง database directory ให้เพิ่ม
default-character-set = tis620
character-set-server = tis620
collation-server = tis620_thai_ci
init_connect = 'SET collation_connection = tis620_thai_ci'
init_connect = 'SET NAMES tis620'
จากนั้น Restart MySQL
เพราะฉะนั้น ผู้ที่ใช้ UTF-8 ก็จะต้องใน code ทำนองเดียวกัน ทุกครั้งเวลา connect database
mysql_db_query($dbname,"SET NAMES UTF8");Character set
เมื่อก่อนเป็น Character Set แบบปลอมๆ คือข้อมูลต่างๆที่เก็บลงฐานข้อมูลมันคือ latin1 นั่นเอง
แล้วทำไม Latin1 มันใช้ภาษาไทยได้หละ แน่นอนอยู่แล้วมันใช้ได้เนื่องจาก latin1 มัน Key map แบบเดียวกะ keyboard ไทย และประเทศอื่นๆ ก็เป็น Key Map เดียวกัน แต่สมัยนี้พวกภาษาจะไม่ขึ้นอยู่กับ Key Map ที่เราเห็นอยู่แล้ว (UTF-8)
*** และที่สำคัญในเวอร์ชั่น 4.0, 3.x มีให้เลือก character set ตรงนั้นไม่ได้มีความหมายว่า เก็บข้อมูลเป็นภาษาไทย
ความหมายของมันคือ เรืยงลำดับภาษาไทยต่างหาก คนไทยจึงเข้าใจผิดๆ มานาน -_-' กับ tis620 ใน MySQL
ไม่ก็ลองย้อนไปดูได้ครับแม้ว่าจะเลือก charset เป็น latin1 มันก็เก็บข้อภาษาไทยได้ เพียงแต่เรียงลำดับภาษาไทยไม่ได้เท่านั้น
ทำความเข้าใจ ระดับภาษาของ MySQL กันใหม่ เพราะ MySQL เวอร์ชั่นใหม่มีความยืดหยุ่นมากขึ้น
- ต้องกำหนดภาษาเมื่อ Connect to Databaseสรุปแล้ว ใช้ UTF-8 กันดีกว่าครับ ไม่มีปัญหา เป็น Character set ที่ใช้กับทุกภาษา ส่วนคนที่ใช้ TIS-620 ก็เพิ่ม code กันเองเองนะคร้าบ
- ต้องกำหนดภาษาเมื่อ Create Database (การเรียงลำดับ)
- ต้องกำหนดภาษาเมื่อ Create Table (การเรียงลำดับ)
- ต้องกำหนดภาษาเมื่อ Create Field (การเรียงลำดับ)
No comments:
Post a Comment