ปัญหาแสดงภาษาไทยเป็น ??? ใน mysql สำหรับ phpnuke
February 6, 2007
หลากหลายวิธีแก้มาก
วิธีแรก ผมชอบอันนี้ครับ เพราะไม่ต้องยุ่งกับ mysql เลย แค่เปลี่ยนโค้ดของเราในการ include
ปิดไฟล์ /db/mysql.php ครับ
เพิ่มบรรทัด
mysql_query(“SET CHARACTER SET tis620″);
ต่อท้ายจาก บรรทัดที่ 61 หรือ ที่เขียนไว้ว่า
$dbselect = @mysql_select_db($this->dbname);
Code เต็มๆคือตามนี้ครับ
=================================================================
$dbselect = @mysql_select_db($this->dbname); /* บรรทัดที่ 61*/
mysql_query(“SET CHARACTER SET tis620″); /* บรรทัดที่ 62 เพิ่มเข้ามา*/
if(!$dbselect) /* บรรทัดที่ 62 เดิม ซึ่งจะกลายเป็น 63 แทน*/
วิธีสอง แก้ที่ mysql
mysql 5.1.11
phpMyAdmin – 2.9.1
PHP 5.1.6
my.ini
[client]
port= 3306
socket= E:/WWW/mysql/tmp/mysql.sock
default-character-set = tis620
# The MySQL server
[mysqld]
port= 3306
socket= E:/WWW/mysql/tmp/mysql.sock
character-set-server = utf8
collation-server = utf8_unicode_ci
1.ลบฐานข้อมูลเดิมทิ้ง และไฟล์ต่างๆในroot จริง ทิ้ง ก่อน จดจำ โค้ดภาษาที่เครื่องเซิฟเวอร์จริงใช้(ดูที่ หน้าแรก Phpmyadmin จะเห็น
2.ทดลองทำจำลองที่เครื่องเราก่อน โดยการ เปลี่ยนโค้ดภาษา ให้ เหมือนกับที่ เซิฟเวอร์จริงใช้ อย่างของผมเครื่องจำลองเป็น
mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
ตามที่ได้เขียนไว้ข้างบนนะครับ
เซฟแล้วรีบู๊ต mysql ใหม่ ที่นี้ก็เหมือนกับเครื่องเซิฟเวอร์จริงที่เราจะส่งข้อมูลแล้ว ลองทดสอบNuke ดูที่เครื่องจำลอง เราก่อน
3.ทีนี้เข้าไป phpmyadmin เซิฟเวอร์จำลอง เพื่อ import file .sql เข้ามา สังเกตหน้าแรกจะมีโค้ดอักษรของเซิฟเวอร์จำลอง ตามที่เซ็ตไว้ ให้เซ็ตค่าต่างๆที่เกี่ยวกับภาษา ผมลองใช้หลายตัวทั้ง Tis620,Utf8 สามารถใช้ได้ในเครื่องจำลอง แต่ไม่สามารถใช้ได้ในเครื่องเซิฟเวอร์จริงจึงได้ลองกับ Latin1 แล้วก็พบว่าใช้ได้(แสดงว่าถูกโฉลกกับ เครื่องเซิฟเวอร์จริง ฮ่า…ฟลุ๊ก จริงๆ
4.โหลดฐานข้อมูลโดยใช้โค้ดภาษาเป็นลาตินไปเลย แล้วลองเปิดเว็บดู พบว่าตัวอักษรใช้ได้ทันที เพราะเน็ตเรา IE encode เป็นไทยอยู่แล้ว แต่ตัวรูปภาพต่างๆไม่มี ต้องไปปรับที่ theme ต้องเข้าไปที่ ระบบadmin ครับ โล่งอกไปที
http://www.thainuke.org/modules.php?name=Forums&file=viewtopic&t=18254
REFERENCE
http://www.thainuke.org/modules.php?name=Forums&file=viewtopic&t=10027
Troubleshooting mysql php phpmyadmin deegaprogram
February 5, 2007
mysql
- ตั้งแต่เวอร์ชั่น 4.0 เป็นต้นไป หากคุณต้องการให้มันเก็บภาษาไทยถูกๆ (ไม่ขึ้น ???) เติมไอ้นี่เข้าไป
$charset = “SET character_set_results=tis620″;
mysql_query($charset) or die(“Invalid query: ” . mysql_error());
tag : mysql ภาษาไทย ???
phpmyadmin
- php 5 เป็นต้นไป ไม่ได้เซต mysql ให้ใช้ได้แบบ default ให้ไปแก้โดยเซต variable path ให้เห็น libmysql.dll และ แก้ให้เห็น extension=php_mysql.dll
- แก้ extension=php_mbstring.dllด้วยถึงจะใช้ได้
PEAR
- โหลด go-pear.php แล้วใช้คำสั่ง php go-pear.php
- เลือก directory รากให้อยู่ที่ c:\php เลย
- หลังลง pear เสร็จ ใช้คำสั่ง pear install DB.php ด้วย
deegaprogram (ไม่ต้องไปเซิร์ชที่ไหนนะครับ เป็นโปรเจคที่รับจากเพื่อนมาทำ ^^”)
- ถ้าคุณไม่คิดว่า source code โปรแกรมคุณจะถูกขังอยู่ในคอมของคุณอย่างเดียว กรุณาเขียนdoc เล็กๆน้อยๆไว้ด้วย
- register_globals ต้องเซตเป็น on จึงจะใช้ session_register() ได้ (แต่ทางที่ได้ใช้ $_SESSION ดีกว่า)
- session.save_path ต้องชี้ไปที่ไดเรคตอรี่จริง อย่าใส่ไว้ที่ c:\tmp เพราะมี security flaw
-tag_short_hand คือการเซตให้ <? ?> ใช้อ่าน php ได้เลย(แต่ระวังมันชนกับแท็ค asp, xml)
- เซตให้แสดง E_All ตอนทำ แต่ตอนใช้จริง เอาออกด้วย (security flaw)
- md5 checksum password ตอนตั้งด้วย
phpnuke
- แค่ import .sql เข้าไปก็ใช้ได้เลย (โว้ย)
- เวลา import เลือก connection collation เป็น tis_620_thai_ci