Page 1 of 2 12 LastLast
Results 1 to 10 of 15

Thread: sql เปิดจาก Editplus แล้วอ่านไทยได้ แต่ import เข้า mysql แล้วอ่านไม่รู้เรื่อง

  1. #1
    Administrator asylu3's Avatar
    Join Date
    Jun 2000
    Location
    Thailand
    Posts
    3,554


    หากคุณเจออาการแบบนี้ก็แสดงว่าคุณโดน Editplus หลอกแล้วโปรแกรมนี้ ปกติแล้วจะแสดงผลภาษาไทยไม่ได้
    จนกว่าจะไปปรับแต่งค่าให้แสดงผลไทย และหาเปิดไฟล์มาแล้วอ่านไทยได้เลย แสดงว่า Encode ของไฟล์นั้นต้องไม่ใช้ utf8 แน่นอน
    ต้องเป็น utf8 ดังนั้นพอคุณเอามา import เข้า mysql ด้วย syntax

    Code:
    mysql -h localhost -u username -p mytable < data_file.sql
    มันจะได้ค่าที่อ่านไม่เป็นภาษาไทยเข้าไป
    ซึ่งหากต้องการให้เป็นภาษาไทยต้องทำแบบนี้[hide=1]
    [code]mysql -h localhost -u username -p mytable < data_file.sql

  2. #2
    Junior Member
    Join Date
    Dec 2008
    Posts
    3


    ผมเคยเจอปัญหานี้นี้เหมือนกันครับ ตอนหัดเล่น PHP กับ MYSQL ใหม่ ยังไม่เข้าใจกับระบบ utf8 กับ tis 620 แต่ หลังจากถาม อ.กูเกิ้ล สัพักก็เข้าใจ วันหลังจะสั่งสมประสพการณ์ และ นำมาเขียนเป็นบทความไว้นะครับ

  3. #3
    Junior Member
    Join Date
    May 2008
    Posts
    0


    ขอบคุณคับ

  4. #4
    Junior Member
    Join Date
    Feb 2008
    Posts
    0


    รู้สึก ที่ เคย ทำ มา และ อย่าง ที่ ผม เข้า ใจ น่า จะ เป็น ที่ภาษา UTF-8 นะครับ

  5. #5
    Junior Member
    Join Date
    May 2009
    Posts
    5


    แต่ถ้ามันมีปัญหาตัว character เพราะว่าไม่ยอมอิมพอร์ตให้เลยผมลองทั้ง UTF-8 และ TIS-620 และก็ยังเป็นภาษาต่างดาวบีบทั้ง gzip ไฟล์ก็ยังไม่ได้จะแก้ยังไงครับผมปวดหัวไปหมดแล้วอ่ะหรือว่าเป็นที่เวอร์ชั่นของ PHPmyadmin

  6. #6
    Administrator asylu3's Avatar
    Join Date
    Jun 2000
    Location
    Thailand
    Posts
    3,554


    แต่ ถ้ามันมีปัญหาตัว character เพราะว่าไม่ยอมอิมพอร์ตให้เลยผมลองทั้ง UTF-8 และ TIS-620 และก็ยังเป็นภาษาต่างดาวบีบทั้ง gzip ไฟล์ก็ยังไม่ได้จะแก้ยังไงครับผมปวดหัวไปหมดแล้วอ่ะหรือว่าเป็นที่เวอร์ชั่น ของ PHPmyadmin[/b]
    ขอ error หน่อยคับว่ามัน error ว่าอะไร จาก sql syntax อะไร
    แล้วก็ขอ screenshot ของค่าอักษรที่แสดงใน phpmyadmin แล้วก็หน้าเว็บด้วยครับ

    สุดท้ายก็ขอให้แน่ใจด้วยว่า charset ถูดต้อง

  7. #7
    Junior Member
    Join Date
    May 2009
    Posts
    5


    แต่ถ้ามันมีปัญหาตัว character เพราะว่าไม่ยอมอิมพอร์ตให้เลยผมลองทั้ง UTF-8 และ TIS-620 และก็ยังเป็นภาษาต่างดาวบีบทั้ง gzip ไฟล์ก็ยังไม่ได้จะแก้ยังไงครับผมปวดหัวไปหมดแล้วอ่ะหรือว่าเป็นที่เวอร์ชั่นของ PHPmyadmin
    [/b]

    ขอ error หน่อยคับว่ามัน error ว่าอะไร จาก sql syntax อะไร
    แล้วก็ขอ screenshot ของค่าอักษรที่แสดงใน phpmyadmin แล้วก็หน้าเว็บด้วยครับ

    สุดท้ายก็ขอให้แน่ใจด้วยว่า charset ถูดต้อง
    [/b]
    ตอนแรกยังไม่ได้เซ็ต charset เป็นแบบนี้



    สุดท้าย import ได้แต่แสดงผลภาษาไทยไม่รู้เรื่อง


  8. #8
    Junior Member
    Join Date
    Dec 2008
    Posts
    1


    เคยเป็นแบบนี้เหมือนกันครับ แต่ไม่ได้ export ด้วย PHPMySQL ครับ ใช้ command line
    mysqldump -u ... -p... --database=... แต่ไม่ได้ระบุ charset ตอน export ก็เลยออกมาเป็น default ตอน start mysql แต่พอลองเพิ่ม option --default-charset= ก็ใช้ได้ครับ
    mysqldump -u ... -p... --database=... --default-charset=utf8 > output_file.sql
    แล้วลองเอาไป import ดูครับ
    หรือถ้าเป็น linux ลองใช้คำสั่ง iconv convert character set ดูครับ
    iconv --list ...ดูก่อนว่ามี uft-8 กับ tis-620 หรือเปล่า
    iconv -f UTF-8 -t TIS620 fileที่exportจากmysql.sql >output_utf8.sql

    น่าจะช่วยได้ครับ

  9. #9
    Junior Member
    Join Date
    Jan 2010
    Posts
    0


    น่าจะเกี่ยวกับพวก encode นะครับ

  10. #10
    Junior Member
    Join Date
    Jan 2010
    Location
    Bangkok
    Posts
    12


    Cool

    ขอเสริมเพิ่มเติมนะครับ
    1. Editplus อ่านไทยได้แน่นอน แม้ว่า encoding ของไฟล์จะเป็น ascii ก็ตาม ถ้า Windows มี Regional เป็นไทย
    2. mysql ไม่รู้ encoding ของไฟล์ จึงต้องมีการบอก mysql encoding ของต้นทางเป็นอะไร
    3. ถ้าบอก econding ของต้นทางได้ถูกต้อง จะสามารถนำข้อมูลเข้าตารางได้ค่อนข้างแน่นอน โดยไม่สนว่า charset ของ column ที่จะนำเข้าเป็นอะไรก็ตาม


    ตัวอย่างนะครับ
    ไฟล์ ascii => บอก mysql ว่าเป็น utf8 => นำเข้าตารางที่เป็น utf8 ** OK **
    ไฟล์ utf-8 => บอก mysql ว่าเป็น utf8 => นำเข้าตารางที่เป็น utf8 ** OK **

    ไฟล์ ascii => บอก mysql ว่าเป็น utf8 => นำเข้าตารางที่เป็น utf8 ** OK **
    ไฟล์ utf-8 => บอก mysql ว่าเป็น utf8 => นำเข้าตารางที่เป็น utf8 ** OK แต่อาจไม่ 100% เนื่องจากไฟล์ utf-8 อาจมีอักขระที่ไม่ใช่ไทยหรืออังกฤษได้ **

    แต่ถ้าเป็นแบบนี้
    ไฟล์ ascii => บอก mysql ว่าเป็น utf8 => นำเข้าตารางที่เป็น อะไรก็ได้ ** NOT OK **
    ไฟล์ utf-8 => บอก mysql ว่าเป็น utf8 => นำเข้าตารางที่เป็น อะไรก็ได้ ** NOT OK **

    สรุปก็คือ การบอก mysql ว่าข้อมูลของเรามี encoding แบบใดนั้น สำคัญมาก
    แม้จะไม่ตรงกับ charset ของ column ก็ตาม mysql สามารถ mapping ระหว่าง charset ได้โดยอัตโนมัติ


    ดังนั้นการโหลดไฟล์ sql เข้า mysql ที่ถูกต้อง ให้ตรวจสอบดังนี้

    [hide=1]1. save ไฟล์ให้มี encoding อย่างใดอย่างหนึ่ง เช่น ascii สำหรับ utf8 และ utf-8 สำหรับ utf8
    ไม่จำเป็นต้องตรงกับ charset ของตารางหรือคอลัมน์ แต่ถ้าตรงก็ดี
    2. แก้ไขไฟล์ sql เติมคำสั่ง SET NAMES utf8; หรือ SET NAMES utf8; ตาม encoding ของไฟล์ในข้อ 1
    โดยเติมไว้บน ๆ เลยก็ได้
    3. ถ้าต้องการเปลี่ยน encoding ของตาราง ก็ให้ค้นหา-แทนที่ utf8 กับ utf8 ซะตั้งแต่ตอนนี้ ก่อนโหลดเข้า mysql
    4. ตอนโหลด ไม่ต้องระบุ option charset ใด ๆ เพราะเราทำในข้อ 2 แล้ว
    shell> mysql -uroot -p dbname < file.sql
    หรือทำใน mysql
    mysql> source /path/to/file.sql[/hide]


    ยาวหน่อย แต่เพื่อความเข้าใจที่ถูกต้อง ใครเข้าใจแล้ว ต่อไปจะไม่มีปัญหาเรื่อง encoding กับ charset ของ mysql อีกต่อไป
    MCT, MCITP: SQL SERVER DBA+BI, CMDBA: MySQL DBA, CMDEV: MySQL DEV

Page 1 of 2 12 LastLast

Similar Threads

  1. Replies: 0
    Last Post: 18-02-2009, 04:07 PM
  2. How to import contacts into your Gmail address book
    By newsbot in forum World Hacking/Security News
    Replies: 0
    Last Post: 11-12-2007, 06:35 AM
  3. Replies: 1
    Last Post: 11-12-2006, 03:59 AM
  4. Replies: 1
    Last Post: 22-11-2006, 11:32 AM
  5. Replies: 0
    Last Post: 24-11-2004, 01:30 PM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •