Weird Fonts After Upgrade to WordPress 2.2+

25 Jun 2007

พอดีคุณ jan ถามเข้ามาในโพสต์นี้ เลยตอบเป็นกิจจะลักษณะหน่อยแล้วกัน เผื่อคนอื่นจะประสบปัญหาเดียวกันด้วยครับ

ก่อนอื่นขอเท้าความนิดนึงว่า WordPress เวอร์ชันเก่ากว่า 2.2 จะัตั้ง default charset เป็น Latin 1 แต่ WordPress เวอร์ชันตั้งแต่ 2.2 ขึ้นไปจะสามารถระบุ charset ของฐานข้อมูลได้ในไฟล์ wp-config.php ครับ

เมื่อเราติดตั้ง WordPress เวอร์ชันตั้งแต่ 2.2 ขึ้นไป ในไฟล์ wp-config.php จะมีบรรทัดนี้อยู่

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

ถ้าเป็นแบบนี้คือมันจะ assume ว่า charset ของ database เป็นค่าตามที่ระบุไว้ในไฟล์ wp-config.php คือ UTF-8 เสมอ ซึ่งถ้า charset ใน database จริงๆ เป็นอย่างอื่น (ส่วนใหญ่จะเป็น Latin 1) ก็จะทำให้ตัวอักษรเละ อ่านไม่ออกได้ครับ วิธีแก้ทำได้สองวิธีคือ

วิธีแรก คือ ลบ config ในส่วนของ charset ออกจากไฟล์ wp-config.php ให้กลายเป็น

define('DB_CHARSET', '');
define('DB_COLLATE', '');

เนื่องจากเราไม่ระบุ charset ในไฟล์ wp-config.php ดังนั้น WordPress จะ fallback กลับไปใช้ default charset ของมัน คือ Latin 1 ครับ

หรือ วิธีที่สอง ก็คือ convert charset ของ database ให้เป็น utf8 ซะ โดยไม่ต้องแก้ไฟล์ wp-config.php ครับ

Comments

เข้ามาขอบคุณค่ะ แก้ไขได้เรียบร้อยแล้วอย่างสมบูรณ์หลังจากงมไปสองวัน
ขอบคุณมากนะคะ

jan | Jun 27th, 2007 at 8:17 am

ถ้าในดาต้าเบสเรามันเป็น MySQL charset: UTF-8 Unicode (utf8) แบบนี้อยู่แล้วหล่ะ ต้อง convert อีกมั๊ย

แล้วอีกกรณีนึงถ้าในดาต้าเบสเรา utf-8 อยู่แล้วแต่ config เราไม่มีกำหนดให้เป็น utf-8 แต่ใช้ๆไปแล้ว อยู่ๆ เราจะมากำหนดใน config เป็น utf-8 จะได้มั๊ย แล้วข้อมูลเก่าๆที่เก็บไปแล้วจะเป็นยังไงอ่ะ หรือต้องไปคอนเวิร์ต ดาต้าเบสอันเก่าด้วย

ปล. กรณีที่สองนี้ไม่ใช่ wordpress นะแล้วจะคอเนวิร์ตยังไงอ่ะ ปกติคอนเวิร์ตดาต้าเบสมันทำใน phpmyadmin ได้เลยมั๊ยหรือมีโปรแกรมช่วยแปลงหรือเปล่าอ่ะ

Techkr.com | Jun 27th, 2007 at 11:22 pm

Techkr.com: ถ้าเป็น UTF-8 อยู่แล้วก็ไม่น่าจะต้อง convert นิครับ

ในการ convert ถ้าไม่ใช้ plugin ก็ต้องเขียนคำสั่ีง SQL เองละครับ หลักการง่ายๆ (แต่ถึก) คือ

The solution is to ALTER all TEXT and related fields to BLOB, then alter the character set and finally change the BLOB fields back to TEXT.

วิธีการคร่าวๆ และตัวอย่างคำสั่ง ก็ตามนี้

kong | Jun 28th, 2007 at 9:19 am

ดูยากจัง คงทำไม่เป็น
ดูในดาตาเบสมันเป็นต่างดาวแต่คงไม่มีผลอะไรมั๊งถ้าเราแบคอัพแล้วเอาขึ้นไปใหม่
พอดูในเว็บก็คงเหมือนเดิมมั๊ง

Techkr.com | Jul 1st, 2007 at 1:10 am

ช่วยยกตัวอย่างแล้วทำให้ดูหน่อยได้ไหมครับ
คือว่าผมกำลังมีปัญหาแล้ว Wordpress มองไม่เห็น DataBase พี่แกจะลงใหม่ท่าเดียว
แล้วโพสต์เก่าๆก๊อจะหายไปหมดเลย รู้สึกเสียดายอ่ะครับเยอะด้วย
ก๊อเลยใช้วิธีปลั๊กอินไม่ได้ อ่ะครับ

madzleng | Jul 19th, 2007 at 7:15 pm

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options