แก้ปัญหา charset ของ mysql กับปัญหาภาษาไทยอ่านไม่ออก?

บนโฮสต์ที่ใช้ phpmyadmin 2.5.4 ครับ ผมใช้ tis-620 แล้ว export db ออกมาเปิดด้วย editplus ก็อ่านไม่ออกครับ มันเป็น

ถ้าเอาไป import ใส่ 2.5.4 เหมือนเดิมก็เน่าเลย ออกมาเป็น latin1_swedish_ci พร้อมกับ ? ? ? ? แต่ยังพอมีทางแก้เพราะว่าโฮสต์ใช้ direct admin ก็เลย import ผ่านทาง cp มันก็เป็นไทยให้ครับ อันนี้เลยหมดห่วง

แต่ผมอยากจะรู้วิธีการแก้ปัญหาที่ถูกวิธีน่ะครับ เพราะถ้าหากว่าเช่าโฮสต์ที่ไม่ได้ใช้ direct admin คงจะใบ้กินเลยอ่ะ

ดังนั้นผมจึงโหลด appserv 2.4.8 มาทดสอบครับ โดยมันเป็น phpmyadmin 2.9.2 ผมลอง export จาก 2.5.4 บนโฮสต์ไป import ใส่ 2.9.2 มันเป็น ? ? ? ครับ ต้องทำอย่างไรครับ ผมลองแล้วมันเป็น latin1_swedish_ci แล้วภาษาไทยก็เป็น ? ? ? หมดเลย ทำไงดีเนี่ย

ที่เก่ามันเป็นอยู่แบบนี้ครับ จะเห็นว่ามีทั้ง utf และ latin1 ปนกันอยู่

ให้แยก export เป็น 2 ไฟล์ คือส่วนที่เป็น utf และ latin1 แยกกัีนคนละครั้ง โดยเลือก compatible เป็น mysql4.0

สำหรับที่กลางที่ import แล้วได้เนื่องจาก default charset ของ db เป็น latin1 ครับ คลิดดูได้จากคลิกที่ชื่อ db ด้านซ้าย แล้วเลือกที่ Operation ด้านขวาบน

สำหรับที่ใหม่ที่ไม่ได้เนื่องจาก default charset ของ db เป็น tis620 ก็ต้องเลือกเปลี่ยนเป็น latin1_swedish_ci ให้เหมือนกับที่เดิมซะก่อน

จากนั้นก็ทำการ import ไฟล์ db ที่ export มาจากที่เก่าเข้าไป
โดยเลือก charset ตอน import เป็น utf8 หากไม่ได้ก็ให้ลอง latin1

แบบนี้ก่อน export เราเปลี่ยนให้เป็น tis620 หรือ utf8 ให้ตรงกับโฮสใหม่ทั้งหมดก่อนได้มั้ยครับ
พอ export ออกมาแล้วนำไป import จะมีปัญหามั้ยครับ

:slight_smile:

ปล.น่าจะปักหมุดกระทู้นี้นะครับ มีประโยชน์มากทีเดียว

ปักแล้วครับ

แล้วกรณีที่ถูกบ้าง เพี้ยนบ้าง แบบนี้ เพราะสาเหตุอะไรเหรอครับ

[quote]

คุ้นๆ lol

ของเก่าเป็น 2.5.4เก็บเป็นtis620 ของใหม่ 2.10.1ลองเป็น utf8,tis620 จะเป็น ??? เลยลอง latin1 , binary ตามที่พี่ๆบอก แต่ว่ามันออกเป็น ฑฆฒธ ค่ะ แต่ว่าตอนexportจากที่เก่าออกมาก็อ่านออกเป็นภาษาไทยปกตินะคะ อย่างงี้แก้ยังไงคะ ขอบคุณค่ะ

พอดีไปอ่านบทความที่ thaidev มา เลยนำมาฝากกันครับ

ชื่อบทความ : ทําไมย้ายข้อมูล MySQL แล้วจึงเป็น ?? ?? ?? ? ??
ที่อยู่บทความ : http://www.thaidev.com/index.php?cmd=showtitle&id=221

ถ้าใครลองใช้วิธีนี้แล้วได้ผล มาบอกกันด้วยนะครับ

:slight_smile:

mysql_query เพิ่มเข้าไปได้ผลจริงๆครับ
ของผมใช้ utf8 ลูกค้าดีส่วนมากใช้ tis620 ทั้งนั้นเลย เลยต้องคอยแก้ให้ลูกค้าครับ
จะมีปัญหากับ CMS สักส่วนใหญ่

แชร์ กันครับ เพิ่งทำได้วันนี้ เมื่อคืนทำกันทั้งคืน ไม่สำเร็จ ??? ตลอด
เช้ามาทำใหม่ ก็ได้จนได้

  • ต้นฉบับ. phpmyadmin 2.6.2

ขอบคุณครับ

[quote author=iTfever.com link=topic=6764.msg96169#msg96169 date=1203309881]
แชร์ กันครับ เพิ่งทำได้วันนี้ เมื่อคืนทำกันทั้งคืน ไม่สำเร็จ ??? ตลอด
เช้ามาทำใหม่ ก็ได้จนได้

  • ต้นฉบับ. phpmyadmin 2.6.2

http://www.chaleefm97.com/webboard/index.php?PHPSESSID=8e8044900678920415face976314070e&topic=852.msg1297;topicseen#new

ผมยังแก้ไม่ได้เลยครับ

db ที่ โฮสเก่าลูกค้า ก็อ่านไม่ออกอยุ่แล้ว dump ออกมา ก็อ่านไม่ออก

[quote author=thaidhost link=topic=6764.msg96204#msg96204 date=1203334327]
http://www.chaleefm97.com/webboard/index.php?PHPSESSID=8e8044900678920415face976314070e&topic=852.msg1297;topicseen#new

ผมยังแก้ไม่ได้เลยครับ

db ที่ โฮสเก่าลูกค้า ก็อ่านไม่ออกอยุ่แล้ว dump ออกมา ก็อ่านไม่ออก

พอดี พี่แมน Service ให้น่ะครับ ทันใจจริง ๆ

อ่านที่นี่ครับ http://www.thaihosttalk.com/th1/index.php?topic=9906.msg96285#msg96285

โอย งงอยุ่ตั้งแต่เช้า ถึงเย็นแล้วครับ ช่วยให้คำแนะนำหน่อยครับ

Host เดิมใช้ Hostgator
phpMyAdmin - 2.11.4
MySQL client version: 4.1.22
ตัวเวบเป็น UTF-8 บันทึกข้อมูล เรียกมาแสดงผลภาษาไทยไม่มีปัญหา

แต่พอย้าย server มาเป็น
phpMyAdmin - 2.11.3
MySQL client version: 5.0.45
ภาษาไทยกลายเป็น ? ลองเลือก collation หลายๆแบบแล้วก็ยังไม่ได้

ช่วยแนะนำหน่อยครับ มันต้อง Export อย่างไร Import อย่างไร?

มันเสียต้องแต่ตอน export แล้วไงครับ เปิดดูด้วย editplus ถึงเป็น ??
ของเดิมเว็บเป็น UTF8 ก็จริงแต่ว่าเก็บข้อมูลแบบ UTF8 ไว้บนตารางแบบ Latin1 ครับ (ดูภาพแรกจะเห็น Latin1_swedish_ci ด้านขวาตาราง)

ขอถามต่อแทนน่ะครับ
แล้วแบบนี้จะแก้ไขยังไงครับ ต้องไป export มาใหม่ใช่ไหม
ถ้าเกิด เลิกเช่าโฮสเก่าไปแล้ว และเขาก็เคลียข้อมูลเราออกไปแล้ว ก็ export ใหม่ไม่ได้
จะมีวิธีแก้จากข้อมูลที่ export มาแล้วไหมคับ

เขียน script ขึ้นมา convert เอาครับ โดยต้องมี 2 connection อันนึงแบบที่สามารถแสดงข้อมูลได้ถูกต้องอีกอันก็ เลือกใช้ charset อันใหม่เอาไปใส่ใน table อันใหม่ที่สร้างใน charset ที่ถูกต้อง