This configuration is for WordPress self-hosted only (not wordpress.com)
ใครไม่ค่อยมีเวลาอ่าน อยากได้เนื้อๆเชิญเริ่มที่ใต้เส้นค่ะ ใครอยากรู้ปัญหาและที่มาของการเขียนโพสต์นี้ก็เชิญอ่านทั้งหมดได้เลย ^-^
ตอนแรกไนซ์กะจะใช้ WordPress 2.1.3 นะคะเนี่ย เพราะยังเสียดาย Plugin บางตัวอยู่
ทั้งที่ก่อน 2.3 จะออกก็ตั้งตารอ tag feauture มาตั้งนาน (พอออกมาจริงๆก็ยังไม่ใส่ tag ซะนี่ กะว่าใส่ทีเดียวเป็นดัชนีคำค้น ถ้าใส่ตอนนี้มันจะมั่วๆ ต้องดูภาพรวมเนื้อหาก่อน)
ก็กะว่า ใช้ 2.1 ไปก่อนค่อยอัพเกรดได้ แต่ถ้าเริ่มด้วย 2.3 ไปแล้วมันจะดาวน์เกรดลงมาไม่ได้น่ะค่ะ
จะลองแก้โค้ดปลั๊กอินให้มันใช้กับ 2.3 ได้ ความรู้ php mysql ก็ยังไม่ถึงขั้น -_-;
ทดสอบมาจนใกล้เวลาเปิดแล้ว มีอันต้องยูเทิร์นมาใช้ 2.3.2 อย่่างกระทันหันกะทันหัน (กะทันหันจริงๆเพราะมันออกสิ้นปี บล็อกเปิดปีใหม่)
เนื่องจาก บังเอิญเข้าไปด้อมๆมองๆดูใน database โอ้ จ๊อด มันอะไรกันนี่ ภาษาไทยอ่านไม่ออกเลย!
ทั้งที่ตรง phpMyAdmin ก็เซ็ต
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_unicode_ci
ตอนแรกไนซ์ก็ยังไม่อยากใช้ 2.3 อยู่ดี เลยไปเสิร์ชดูว่ามีทางแก้มั้ย ก็ลองใช้คำสั่งให้มันเปลี่ยนได้แล้ว แต่ข้อมูลก็ยังไม่เปลี่ยน
ลอง insert ข้อมูลใหม่เข้าไปทาง WordPress หลังจากเปลี่ยนค่าใน db แล้ว ก็ยังไม่ได้อยู่ดี
ก็เลยรู้ว่า ปัญหาอยู่ตรงที่ การที่ตัวสคริปต์ใช้ติดต่อกับ db น่ะค่ะ
ใน WP 2.1 ยังไม่มีให้กำหนดค่า มันเลยใช้ค่า default ของ mySQL collation คือ latin1_swedish_ci (ก็ไม่รู้เหมือนกันว่าทำไมต้องสวีดิช)
แล้วก็นึกถึงบล็อกไทยหลายๆบล็อก ที่มีปัญหาเรื่อง db ภาษาไทยเวลาจะอัพเกรดจาก 2.1 เป็น 2.3
ไนซ์เลยตัดสินใจลง 2.3 ใหม่เลยดีกว่า
เกริ่นมาซะยาว แค่จะมาบอกว่า
ใน wp-config.php อะค่ะ
ควรใส่ค่าที่จะให้ WordPress ติดต่อกับ database ไว้ด้วย
เป็น utf8 (บรรดทัดที่ 8 น่ะค่ะ มันไม่มี default ไว้ให้)
define(’DB_CHARSET’, ‘utf8′); <= อันนี้ดีอยู่แล้ว
define(’DB_COLLATE’, ”); <= อันนี้มันว่าง ควรใส่ ทีนี้ ไนซ์ก็มาคิดหนักว่า แล้วจะเอา utf8_general_ci หรือ utf8_unicode_ci ดีล่ะ
จากการเสิร์ชได้ความว่างี้
The disadvantage of utf8_unicode_ci is that it is a little bit
slower than utf8_general_ci.So when you need better sorting order - use utf8_unicode_ci,
and when you utterly interested in performance - use utf8_general_ci.
อ่านเต็มๆได้ที่mySQL forums
เนื่องจากบล็อกเรา จะต้องมีภาษาเกาหลี ญี่ปุ่น แน่ๆ
(ก็ไม่ีแ่น่ใจเหมือนกันว่าเกี่ยวมั้ย เพราะในฟอรัมนั้นไมได้พูดถึงอักษรจีน แต่เอาว่าให้สอดคล้องกับ collation ใน phpMyAdmin ด้วย)
เลยตัดสินใจว่าใช้ utf8_unicode_ci ดีักว่า
หลังจากตั้งค่าแล้ว ลองใส่ภาษาไทยเข้าไปทาง WordPress
เข้าไปดูใน db เย้ อ่านออกแล้ว
(บางคนอาจจะเห็นว่าไม่สำคัญ front-end ใช้ได้เป็นพอ back-end เป็นไงก็ช่าง
ก็แล้วแต่นะคะ นานาจิตตัง ไนซ์ว่ามันสะดวกเวลาจัดการ db ด้วยน่ะค่ะ)
ใครที่เพิ่งมาตั้งค่าตรงนี้
ข้อความใหม่ๆจะอ่านใน db ได้นะคะ ข้อความเก่าๆก็ยังคงอ่านไม่ออกต่อไป
ถ้าใครข้อมูลใน db ยังไม่เยอะ ก็กดเซฟข้อความใน WordPress อีกรอบ มันก็จะอ่านออก (หรือจริงๆมันอาจจะมีวิธี convert ก็ได้นะคะ ผู้รู้วานบอก)
แต่! ปลั๊กอินบางตัว ที่มีการเพิ่ม table เข้าไปใหม่ มันจะยังดันทุรังใช้ swedish อยู่ค่ะ
เราก็ไปเปลี่ยนซะ ก็อ่านออกแล้ว (ไม่เหมือนกับกรณี WP2.1 ที่ถึงเราไปเปลี่ยนทีหลังก็ยังอ่านไม่ออก)
แล้วทีนี้ WordPress และ database ของคุณ ก็จะไม่มีปัญหากับภาษาไทยอีกแน่นอนค่ะ
ทิปนี้ได้มาจากประสบการณ์ตรงที่เพิ่งเกิดขึ้นไม่นานมานี้ค่ะ
ป.ล. วิธีเปลี่ยน collation นะคะ ใน phpMyAdmin มี 2 วิธี เผื่อใครยังไม่รู้
1. เข้าไปในตาราง ดูตรง structure ของแต่ละ field นะคะ คลิกที่รูปดินสอ (หรือจะติ๊กเลือกหลายๆฟิลด์แล้วเปลี่ยนทีเดียวก็ได้)
2. ใช้คำสั่ง ALTER TABLE table_name CONVERT TO CHARACTER SET charset_name;
↓ ถ้าขี้เกียจเขียนคอมเมนต์เชิญกดให้คะแนนแทน ↓

12:53 pm GMT +7
January 13th, 2008
[comment #39]
PatSonic|Com - patsonic.com
2:42 pm GMT +7
January 13th, 2008
[comment #42]
ถึงไม่ตั้งค่านี้ทางหน้าเว็บมันก็ใช้ได้ปกติค่ะ
แต่ถ้าเข้า phpMyAdmin ไปดู เนื้อหาภาษาไทยที่เก็บในฐานข้อมูลมันจะเป็น ????? หมดเลย
เปลี่ยน encoding ของเบราว์เซอร์ดูแล้วก็ไม่เกี่ยวค่ะ
ไม่รู้ไนซ์เขียนไม่เคลียร์รึเปล่า
ต้องลองมุดเข้าไปดูใน database เองค่ะ แล้วจะพบความจริง อิๆ
Nice - SE7ENize.com - se7enize.com
10:19 pm GMT +7
January 13th, 2008
[comment #46]
ดีมากเลยครับ มีประโยชน์มาก
คิดว่าหลายๆ คนคงเจอปัญหาแบบเดียวกันนี้ครับ
donuzz - donuzz.com
10:47 pm GMT +7
January 13th, 2008
[comment #47]
เรื่องแท็กลองไปดู http://n-blue.nblogz.net/wordpress-23-tag-tag-tag
ส่วนการแปลงฐานข้อมูลถ้าจำไม่ผิดพี่ใช้ UltraEdit
n-blue - n-blue.nblogz.net
7:50 pm GMT +7
January 14th, 2008
[comment #48]
@ เราเองก็ไม่ได้เซ็ตค่าอะไรนะไนซ์ แต่ยังดูดีทั้งนอกจอและในจอ เรื่อง Hosting มีส่วนด้วยอ่ะเปล่า เห็นบอกว่า BlueHost ก็มักเจอเคสนี้บ่อยๆ ไม่แน่ใจเหมือนกัน
iDayBlog - idayblog.com
8:00 pm GMT +7
January 14th, 2008
[comment #49]
อ้า พอพี่เดย์บอกมาอย่างนี้ไนซ์เลยลองไปดูที่ localhost
จริงๆ ด้วยค่ะ WordPress 2.3 ไม่ได้เซ็ตอะไรที่ wp-config.php แต่ก็ยังอ่านออกใน phpMyAdmin
เพราะใน table เป็น utf8_general_ci อยู่แล้วค่ะ (ไนซ์ไม่ได้ไปเปลี่ยนอะไร)
งั้นก็อยู่ที่ default ของ MySQL แต่ละโฮสต์มั้งคะ
(ส่วน default จริงๆๆของ MySQL ก็ swedish อะไรนั่นแหละค่ะ)
แต่โฮสต์ที่ไนซ์ใช้ที่เว็บนี้ ทั้งโฮสต์เก่าโฮสต์ใหม่ ต้องเซ็ตทั้ง 2 โฮสต์เลย
เห็นว่าการเซ็ต collation มันเป็นความสามารถที่เพิ่มเข้ามาจาก WordPress 2.1 แสดงว่าก็ต้องมีความสำคัญอยู่บ้างล่ะเนอะ
เพราะใน 2.1 localhost ถึงเปลี่ยน collation ทีหลังก็ยังอ่านไม่ออกอยู่ดี (และ default มันก็เป็น swedish ทั้งที่ localhost เดียวกัน db เดียวกันกับ 2.3 งงจริงๆ)
Edit 15 Jan 08 รบกวนคนที่ไม่ต้องเซ็ตใน WordPress ก็ยังอ่านออก ช่วยดูให้หน่อยนะคะว่า collation ใน table เป็นอะไร (เหมือนกรณี WordPress 2.3 localhost ของไนซ์รึเปล่า?)
Nice - SE7ENize.com - se7enize.com
11:59 am GMT +7
January 16th, 2008
[comment #50]
Hello, i found your blog and this article related to Wordpress very interesting. However, while i was reading it, i just realised that im a low-tech person so i didnt get what you have written but never mind,im gonna show the article to one of my friend who kinda specialises in Wordpress hehe,,i’m only a blogger who is far from technology
Alitta - alitta.net