เว็บผมทำเป็นแบบระบบเว็บบอร์ดนะครับ ช่วงที่ผมใช้โฮสต์เก่าอยู่ ข้อมูลทุกอย่างที่ใส่เข้าไปในกระทู้ ถ้าเป็นภาษาไทย เราก็จะอ่านออก แต่ถ้าดูใน database แล้วมันจะอ่านไม่ออกครับ (อย่างเช่น ʹ·¹Ò·ÑèÇä») แต่ว่าไม่มีปัญหาครับ เพราะถ้าในเว็บบอร์ดอ่านออก ผมก็ไม่เป็นไร

แต่พอผมจะเปลี่ยนโฮสต์ไปเป็นอีกที่นึง ผมได้ทำการ Export database ด้วย phpMyAdmin จากโฮสต์เก่า แล้ว Import เข้าไปที่โฮสต์ใหม่ แต่ผลปรากฎว่าภาษาไทยอ่านไม่ได้เลย มันจะขึ้นอะไรประมาณนี้น่ะครับ (???????????�??)

Export แล้วไป Import ดูง่ายๆไม่น่ามีปัญหาอะไร แล้วผมทำตรงไหนผิดเหรอครับ?

ผมลองดูไปดูมา ผมว่ามันเป็นตอนที่ Export ออกจากระบบมากกว่าน่ะครับ เพราะว่าตอนที่ผมบอกว่ามันใช้กับเว็บบอร์ดได้ แต่ดูใน database แล้วมันแปลกๆ ผมก็เลยคิดว่ามันเอาภาษาเพี้ยนๆที่ผมเห็นมาลงใน .sql ไฟล์ที่โหลดเข้ามา ทำให้ภาษาไทยกลายเป็นภาษาต่างดาวแทน แล้วพอ Import ไปที่โฮสต์ใหม่ มันก็อ่านภาษาต่างดาวนั้นไม่ออกอยู่แล้ว มันก็เลยขึ้น ????? ไปที่เว็บบอร์ดเลย

ผมคิดว่าผมต้อง save .sql ด้วย encoding ของ TIS-620 หรือเปล่าครับ ถ้าใช่... ผมจะปรับยังไงครับ

ขอคำตอบแบบฟังเข้าใจหน่อยนะครับ ผมยังเพิ่งอ่อนหัดในเรื่องนี้มาก

ปล. ถ้าเป็นไปได้ผมอยากให้ได้คำตอบโดยเร็วที่สุดนะครับ เพราะเว็บบอร์ดผมล่มมาหลายวันแล้ว กำลังหาทางเปลี่ยนโฮสต์อยู่ แต่ติดที่ปัญหาที่นี่ที่เดียว กลัวว่าเว็บเข้าไม่ได้นาน เดี๋ยวคนจะหายหมดน่ะครับ

ขอบคุณล่วงหน้าครับ

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

sirn Thu, 17/05/2007 - 00:13

นั่นคือข้อเสียของคำว่า "เพราะถ้าในเว็บบอร์ดอ่านออก ผมก็ไม่เป็นไร" ครับ ลองอ่านที่นี่ครับ ปัญหาลักษณะคล้ายๆ กัน: ถามเรื่อง charset หน่อยครับ

ถ้าหากทำตามในกระทู้นั้น แล้วไม่เวิร์คก็: ก่อนอื่นไปเช็คว่าภาษาในไฟล์ .sql ที่ทำการดัมป์ออกมา เป็นภาษาไทยปกติ หรือว่าเป็น Latin แบบอ่านไม่ออก? และลองสั่ง SHOW VARIABLES LIKE '%character%'; จากทั้งสองเซิฟเวอร์มาให้หน่อยครับ หลังจากนั้น ค่อยว่ากันอีกที

Nattawat Thu, 17/05/2007 - 00:28

ไฟล์ .sql ที่ดัมป์ออกมาไม่ได้เป็นภาษาไทยครับ มันเป็นแบบที่ผมอะไรประมาณนี้น่ะครับ --> à ÍÒææ áÅéÇ¡ÙÂÔ¹

---------------------

นี่เป็น Show variable ของเซอเวอร์ที่ผมจะ EXPORT นะครับ (โฮสต์ตัวเก่า)

Variable_name Value character_set_client utf8 character_set_connection utf8 character_set_database latin1 character_set_filesystem binary character_set_results utf8 character_set_server latin1 character_set_system utf8 character_sets_dir /data/mysql/zlaten/share/mysql/charsets/

-------

ส่วนนี่เป็น Show variable ของเซอเวอร์ที่ผมจะ IMPORT นะครับ (โฮสต์ใหม่)

Variable_name Value character_set_client utf8 character_set_connection utf8 character_set_database latin1 character_set_results utf8 character_set_server utf8 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/

iamcgi Thu, 17/05/2007 - 00:46

กลัวลูกค้าหายแล้วจะหาเงินไม่ได้เหรอ ถ้าหาเงินได้ก่อนจะเอาไปทำอะไร ก็จ่ายเงินเด็กๆ ที่จ้างเค้าทำงานก่อนล่ะ

------------- ตายเพราะไต

Nattawat Thu, 17/05/2007 - 00:50

อย่าไปนอกเรื่องสิครับ คุณ iamcgi

ไม่ว่าจะเป็นบอร์ดไหน ถ้าหากมี traffic ได้ที่แล้ว ย่อมไม่มีใครอยากให้เว็บล่มไปแบบไม่รู้สาเหตุหลายๆวันหรอกครับ

sugree Thu, 17/05/2007 - 01:20

เนื่องจากของเก่าเก็บเป็น latin1 ส่วนของใหม่เก็บ utf-8 ทำให้ต้องแปลงตามลำดับ latin1 -> tis-620 -> utf-8 แล้วค่อยเอาไปอิมพอร์ต

sirn Thu, 17/05/2007 - 04:46

บน Windows ผมไม่รู้แฮะว่าต้องทำยังไง (เรื่อง Convert) แต่อย่างที่คุณ Sugree บอก คือต้องแปลงไฟล์ sql จาก Latin1 ไปเป็น TIS-620 ก่อน เสร็จแล้วแปลงไปเป็น UTF-8 แล้วค่อยดัมป์ลงฐานข้อมูลครับ ถึงได้ แต่การทำแบบนั้น จำเป็นที่จะต้องเปลี่ยนหน้าเว็บไปให้เป็น UTF-8 ด้วยครับ

อีกทางเลือกนึงก็คือ แปลงเป็น TIS-620, แก้ Table Collation ให้เป็น TIS-620, แก้โค้ดของบอร์ด ให้บังคับ Connection เป็น TIS-620 (SET NAMES TIS-620;)

Nattawat Thu, 17/05/2007 - 08:24

พอดีผมไปติดต่อกับโฮสต์มา ไม่รู้เขาทำอะไรเหมือนกันครับ แต่ตอนนี้อ่านภาษาไทยจากเว็บได้แล้ว

กลายเป็นเหมือนกับ database อันเก่าเลยครับ แบบว่าอ่านภาษาไทยในบอร์ดได้ แต่อ่านใน phpMyAdmin ไม่รู้เรื่อง

ถึงตอนนี้มันจะใช้ได้แล้ว แต่ผมกลัวว่ามันจะมีปัญหาอีกเพราะมันยังไม่เป็นภาษาไทยใน phpMyAdmin -- มีวิธีที่จะทำให้ตรงนี้อ่านภาษาไทยได้มั้ยครับ?

ijook Thu, 17/05/2007 - 09:25

ลองดูตัวอย่างวิธีทำให้ wordpress สามารถใช้ภาษาไทยได้อย่างไม่มีปัญหา จากประสบการณ์ของผมเองครับ wordpress Thai how to. และ upgrade wordpress to 2.2 Thai support.

ผู้ช่วยครู :) » มาทบทวนคณิตศาสตร์กับครูออนกันนะ

lancaster Thu, 17/05/2007 - 19:39

export เป็น .sql แล้วเปลี่ยน charset ของ db เป็น tis-620 เสร็จแล้ว import กลับเข้าไปโดยกำหนด --default-character-set=tis620 ด้วยครับ

Nattawat Fri, 18/05/2007 - 03:05

@sirn, collation ของตารางยังเป็น latin1 อยู่เลยครับ (อันนี้ไม่รู้แก้ไง)

@lancaster, เวลาผม export ออกมาแล้ว แล้วผมจะเปลี่ยน charset ต้องทำยังไงครับ (ใช้อะไรเปลี่ยนครับ)

sirn Fri, 18/05/2007 - 05:58

เคสของผมส่วนมากจะเป็นการแปลงจาก UTF-8 ใน Latin1 ไปเป็น UTF-8 เสียมากกว่า แต่คิดว่าคงจะคล้ายๆ กัน ทางที่ดีก่อนจะทำอะไร ควรสร้าง database สำรอง + บอร์ดสำรอง แล้วไปลองทำที่นั่นเอาน่าจะปลอดภัยที่สุดนะครับ

เรื่องการเปลี่ยน collation ของ table และ database สามารถไปปรับแก้ได้ทางแท็บ Operation ของ PHPMyAdmin ครับ แต่ผมไม่มั่นใจว่าการแปลงด้วยตรงๆ เลยในตอนนี้จาก Latin1 ไปเป็น TIS-620 เลยจะเป็นการทำให้เกิดปัญหา ??? ขึ้นอีกรอบหรือกลายเป็นตัวอ่านไม่ออกอีกหรือเปล่า (กลับด้านกัน กับปัจจุบัน ทำนองนั้น) [เพราะในกรณีของ UTF-8 จำเป็นต้องไปแก้ไฟล์ คล้ายๆ กับที่คุณ ijook บอกเสียก่อน]

ส่วนเรื่องการแปลง charset ของไฟล์ที่ export ออกมาแล้ว สามารถทำได้ด้วยการใช้ iconv โดยการสั่ง iconv.exe -f latin1 -t tis-620 "\path\to\file.sql" > "\path\to\newfile.sql" ครับ (อันiconv บนเว็บก็มี จะลองดูก็ได้) หลังจากนั้น อย่าลืม Replace latin1_general_ci (หรืออะไรก็ตาม) ภายในไฟล์ SQL ให้กลายเป็น tis620_thai_ci ด้วย ก่อนทำการ import เข้าไป เพื่อที่ MySQL จะได้เซ็ท character set ของ table ได้ถูกต้องครับ

สรุปเป็นขั้นตอนได้ประมาณนี้

  1. export ข้อมูลออกมา ทั้งๆ ที่มันยังเป็น Latin1 อยู่แบบนั้น
  2. เอา iconv แปลงไฟล์จาก Latin1 ไปเป็น TIS-620
  3. แก้ไข latin1_general_ci ในไฟล์ (ปกติจะอยู่ส่วนของ collate) ให้เป็น tis620_thai_ci
  4. import ไฟล์กลับเข้าไป ตรวจสอบความเรียบร้อย
  5. ถ้าหากใช้ไม่ได้ แปลว่า:
    • ต้องนั่งแงะโค้ด เพื่อเพิ่ม SET NAMES 'TIS-620'; ก่อนการ Query ทุกครั้ง... หรือ:
    • ไปบอกให้โฮสตั้ง character_set_connection เป็น TIS-620

โดยปกติแล้วผมมักจะยึด character set ของ PHPMyAdmin เป็นหลัก แล้วเน้นไปซ่อมเอาที่ตัวของเว็บ ของบอร์ดที่มีปัญหาเสียมากกว่าครับ (เพราะผม "คิด" ว่า PHPMyAdmin จะไม่มั่วเรื่อง Charset)