http://glasslinethai.com/th/index.php
พอดีลูกค้าย้ายมาจากเครื่องอื่น แล้วติดปัญหา เอเล้อภาษาไทยครับ
ผู้มีประสลการณ์ ชี้แนะหน่อยครับ
http://glasslinethai.com/th/index.php
พอดีลูกค้าย้ายมาจากเครื่องอื่น แล้วติดปัญหา เอเล้อภาษาไทยครับ
ผู้มีประสลการณ์ ชี้แนะหน่อยครับ
mysql_connect(“localhost”,“User”,“Password”) or die(“Can not connect to server”);
$dbname = “Database”;
mysql_select_db($dbname) or die(“Can not connect to database”);
mysql_query(“set NAMES tis620”);
ขอบคุณมากครับ สำเร็จและ
อันนี้คือการแก้ที่ปลายเหตุ ที่ถูกต้องดูที่ตัว โค๊ต และ ดาต้าเบสครับ
ข้อมูลเป็น tis-620
database เป็น utf-8
code เป็น tis-620
web server เป็น tis-620
ใช้ไหมครับ
ดังนั้นเวลาส่ง set NAMES tis620 มันจึงออกมาถูกต้อง
เคสส่วนใหญ่ของลูกค้าเป็นแบบนี้ค่ะ ใช้ windows-874 กับ tis-620 ส่วน Database เป็น UTF-8 Unicode, utf8_unicode_ci เวลา Import มันเลยเป็นภาษาต่างดาว
ปกติลูกค้าไม่รู้หรนอกครับว่าตัวเองใช้อะไร
ที่นี้ถ้า web server กับ code ใช้ charset เดียวกับ ข้อมูลใน db มันก็ไม่มีอะปัญหา
แืตืปัญหาเกิดจากใช้คนละ charset กัน
serer มันส่งมาตามม default ของ data
web รับมาอย่างไหนก็แสดงออกอย่างนั้น
มันเลยอ่านไม่ออก
เราจึงต้องบังคับให้ db ส่งออกมาในรูปแบบเดียวกับ web จึงได้ส่ง sql command ดังกล่าวไป
แต่ไม่ว่าอย่างไร
ผมจะส่ง sql command นั้นไปทุกครั้งที่ ต่อกับ db
ผลคือ มัีนไม่เคยมีปัญหาอะไรเลยเวลาจะย้าน db ไปใน server อื่นที่ default ไม่เหมือนกัน
การเพิ่ม mysql_query(“set NAMES xxx”); ไม่ใช่แก้ปลายเหตุนะครับ
โค้ดที่ดีควรจะกำหนด client charset
ถ้าโค๊ดถุก ดีบีถุก เวลาย้ายทำไมจึงเกิดปัญหาล่ะครับ
ต้นเหตคือ charset ไม่เหมือนกัน
การแก้ก็ทำให้เหมือนก็จบ
อยู่ทีว่าจะทำที่ไหน code หรือ server
ปัญหาคือ default ของ db ครับ
add เข้าไป ถ้าเราไม่กำหนด charset ระบบมันจะได้ใช้ default ครับ
ดังนั้น การที่ไม่กำหนด charset ก่อน create db มันจึงเกิดปัญหานี้ขึ้น
อีกอย่างเราเป็นลูกค้า
คุณเป็นเจ้าของเครื่อง
ผมใช้ db iso-8859-7
ผมบอกให้คุณเปลี่ยน config ของ mysql เป็น iso-8859-7 คุณจะทำให้ไหมครับ
หรือต้องให้ผมแก้ไขโปรแกรมเพื่อให้ใ้ช้ charset ที่ server คุณใช้
ซึ่งทั้งโปรแกรมอาจจะมีมากกว่า 1000 file
ดังนั้น ผมจึงต้องสั่งบังคับ การติดต่อกับ mysql เป็น iso-8859-7 ก่อนทุกครั้ง มันจะได้ไม่มีปัญหา
ผมแก้ที่ charset ก่อน create db ครับ
คุณต้องมองในมุมมองลูกค้าสิครับ
สมมติผมเช่า host คุณ แล้วบอกว่าใช้ php กับ mysql
คุณจะถามก่อนไหมว่า ผมใ้ช้ charset อะไร
แล้วถ้าผมเป็นลูกค้าแบบที่ว่าใช้อย่างเดียว code ก็จ้างโปรแกรมเมอร์เขียน
ผมจะรู้ไหมว่าผมใช้ charset อะไร
หรืออีกกรณีหนึ่งเจ้าของเครื่องไม่ยอม เปลี่ยน charset ตามที่ลูกค้าใช้