ขอคำแนะนำครับ ย้ายเว็บแล้วภาษาไทยไม่ขึ้น แก้ เป้น utf 8 หมดแล้วนะครับ

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 ตามที่ลูกค้าใช้