วิธีแก้ 1 กำหนด Database ให้ใช้
tis620
แก้ไขไฟล์ config ของ MySQL โดยการกำหนดค่าดังนี้
CODE
[mysqld]
default-character-set=tis-620
บน Linux จะอยู่ที่ etc/my.cnf
บน Windows จะอยู่ที่ windows/my.ini
restart MySQL อีกครั้งหนึ่ง ตรวจสอบให้แน่ใจว่า default character
เป็น tis620 แล้ว
ตัวอย่าง การตรวจสอบ ด้วยคำสั่ง s ใน mysql client บน Windows
QUOTE
mysql> s
--------------
mysql Ver 14.12 Distrib 5.0.18, for Win32 (ia32)
Connection id: 2
Current database:
Current user:
root@localhost
SSL:
Not in use
Using delimiter: ;
Server version: 5.0.18
Protocol version: 10
Connection:
localhost via TCP/IP
Server characterset: tis620
Db characterset: tis620
Client characterset: latin1
Conn. characterset: latin1
TCP port:
3306
Uptime:
30 sec
Threads: 1 Questions: 3 Slow queries: 0 Opens:
0 Flush tables: 1 Open table
s: 3 Queries per second avg: 0.100
--------------
ตัวอย่าง การตรวจสอบ ด้วยคำสั่ง s ใน mysql client บน Linux
QUOTE
mysql Ver 14.7
Distrib 4.1.7, for redhat-linux-gnu (i386)
Connection id: 3
Current database:
Current user:
root@localhost
SSL:
Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 4.1.7
Protocol version: 10
Connection:
Localhost via UNIX socket
Server characterset: latin1
Db characterset: tis620
Client characterset: tis620
Conn. characterset: latin1
UNIX socket:
/var/lib/mysql/mysql.sock
Uptime:
5 sec
Threads: 1 Questions: 5 Slow queries: 0 Opens:
11 Flush tables: 1 Open tables: 0 Queries per
second avg: 1.000
--------------
นอกจากนี้เราสามารถใช้ MySQL Client tool อื่นๆ
สำหรับตรวจสอบได้เช่นกัน
ตัวอย่างค่า default เริ่มแรก
เมื่อปรับค่า default เป็น tis620
ดังนั้น ตัวแปลดังกล่าว ควรจะมีค่าตังนี้
QUOTE
- character_set_client =
tis620
- character_set_connection = tis620
- character_set_database = tis620
- character_set_results = tis620
- character_set_server = tis620
- character_set_system = utf8
- collation_connection = tis620_thai_ci
- collation_database = tis620_thai_ci
- collation_server = tis620_thai_ci
character set กับ collation
??
character set คือรูปแบบของการจัดเก็บข้อมูล
เราสามารถดูรูปแบบที่ MySQL สนับสนุนการใช้งานได้จาก คำสั่ง SHOW
CHARACTER SET;
collation คือรูปแบบของการจัดเรียงและเปรียบเทียบ
รูปแบบการจัดเรียงที่มักใช้กันบ่อยๆ มักลงท้ายด้วย ci ,cs, bin
(เรียงตามลำดับ) เราสามารถดูรายชื่อ collation ที่สนับสนุนได้จาก SHOW
COLLATION;
ci, cs, bin ?? มีความหมายดังนี้
ci = case-insensitive จัดเรียงตามตัวอักษร มองตัวอักษรใหญ่
และเล็กมีความสำคัญเท่ากัน โดยปกติมักจะใช้ collation แบบ ci
cs = case sensitive จัดเรียงโดยให้ความสำคัญกับอักษรตัวใหญ่
มากกว่าตัวเล็ก เช่น Z จะมาก่อน a
bin = binary ใช้สำหรับการเปรียบเทียบ
2. บอกให้ mysql
รู้ถึงรูปแบบของภาษาที่ต้องการใช้ ผ่าน sql
command
เราสามารถใช้คำสั่ง SET เพื่อกำหนดค่าตัวแปลของ MySQL ได้
ดังนั้น ก่อนที่จะ insert, update เราต้องบอกให้ MySQL
ทราบถึงรูปแบบของภาษาที่ใช้ ยกตัวอย่างเช่น
CODE
mysql_query("SET NAMES 'tis620'
");
mysql_query("SELECT * FROM TEST");
(UPDATE -
2006.02.08)
ยังมีอีกวิธีหนึ่งคือ แนบคำสั่งไปกับประโยค SQL เลย เช่น
CODE
mysql_query("SELECT * FROM TEST
ORDER BY idRec COLLATE tis620_thai_ci");
Links
MySQL : Chapter 10. Character Set Support
เมื่ออักษรภาษาไทยกลายเป็น ?????? (
phpconcept.com)