Interface ข้อมูลเข้า SQL ไม่ได้
กระทู้เก่าบอร์ด อ.Yeadram

 6,364   4
URL.หัวข้อ / URL
Interface ข้อมูลเข้า SQL ไม่ได้

เนื่องจากมีข้อมูลที่เป็นภาษาไทย จะ Load เข้า SQL2005 ภาษาที่ได้จะเป็น
ภาษาต่างดาว ไม่สามารถอ่านได้

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R00159
เท่าที่ประสบการณ์แบบลองผิดลองถูกของผม (ไม่ได้ร่ำเรียนมาโดยตรง) บอกผมว่า ต้องดูหลายเรื่อง หลายระดับครับ เช่น

ตอนติดตั้ง ดาต้าเบส ต้องเซ็ต chaset ให้รองรับภาษาไทยไว้ก่อนนะครับ
เช่น
CREATE DATABASE [yeadramwebboard]
COLLATE Thai_CI_AS
GO

อย่างของผมที่ใช้ในเว็บบอร์ดนี้ ผมใช้ Thai_CI_AS
ส่วนการโหลด ผมโหลดจากไฟล์ ที่มีนามสกุล .sql
ซึ่งมันก็เป็น text file ธรรมดานี่เอง แต่มันไม่ธรรมดาตรงที่ เวลาเซฟเราเซฟให้มันเข้ารหัสแบบไหน
ANSI หรือ unicode หรือ utf8

แล้วโปรแกรมที่ใช้ช่วยโหลดน่ะ รองรับ รหัสนั้นหรือไม่ อย่างของผม ไม่ได้ใช้ ตัวจัดการที่ทางโฮสต์เค้าแถมให้นะครับ ผมใช้ตัวจัดการของผมเองโดยรีโมตไปที่โฮสต์
ตัวจัดการของผม เป็นโปรแรกม ฟรีแวร์ SQL Manager 2005 Lite for SQL Server (2.4.0.1)
ดูความแตกต่างเมื่อโปรแกรมนี้อ่านสคริปต์ sql ของเรา สำหรับไฟล์ sql ของผม ซึ่งผม save as เป็นแต่ละรหัส แล้วลองให้โปรแกรมนี้เปิดสคริปต์ขึ้นมาอ่าน ยังไม่สั่ง รันสคริปต์ (เฉพาะบรรทัดแรกของสคริปต์ ก็เห็นความแตกต่างแล้วครับ)
-ไฟล์แรก ผมเซฟเป็น ANSI ชื่อไฟล์ว่า yeadramwebboard.sql
-- SQL Manager 2005 Lite for SQL Server (2.4.0.1)

-ไฟล์ที่สองครับ ผมเซฟเป็น utf8 ชื่อไฟล์ว่า yeadramwebboard_utf8.sql
-- SQL Manager 2005 Lite for SQL Server (2.4.0.1)

-ไฟล์ที่สามครับ ผมเซฟเป็น unicode ชื่อไฟล์ว่า yeadramwebboard_unicode.sql
อันนี้ดูไม่ได้เลยครับ ขอยกไว้ ไม่เอามาให้ดูนะครับ

ผมจึงสรุปเอาแบบลองผิดลองถูกของผมก็คือ การที่จะโหลดภาษาไทยเข้าฐานข้อมูล ไม่ให้มีปัญหาเรื่องแสดงผล ไม่ว่าจะเข้าฐานข้อมูล ms sql หรือ mysql ก็ตาม จะมีสิ่งที่ต้องรู้, ระวัง, สังเกตุ อยู่สองเรื่องหลักๆ
1 ชนิดของดาต้าเบสที่เราสร้าง รองรับภาษาไทยหรือไม่ (COLLATE)
     - แต่ละชนิดฐานข้อมูลมี ชนิด COLLATE ให้เราเลือกใช้เยอะครับ ต้องเลือกให้ตรงกับงานของเรา
2 โปรแกรมที่ใช้ช่วยโหลด อ่าน สคริปต์ของเราได้ถูกต้องหรือไม่
    - บางโปรแรกมสามารถตั้งค่าการอ่านได้ว่าจะให้มันอ่านด้วยรหัสอะไร
    - การเซฟสคริปต์ควรรู้อยู่ก่อนว่า เซฟไปเพื่อจะให้ใครอ่าน

ถ้าจะเอาอย่างผมก็คือ เซฟสคริปต์ด้วยรหัส ANSI
เลือก COLLATE ของฐานข้อมูลให้เป็น Thai_CI_AS
แล้วลองอัพขึ้นไปใหม่ดูครับ   
แต่...... ในฐานข้อมูลอาจเก็บข้อมูลได้ถูกต้องแล้ว .. ถามว่าเวลาเอามาแสดงผล ใช้โปรแกรมอะไรดึงลงมาตอนดึงลงมา ใช้ รหัสอะไรไปดึงมา นั่นก็อีกนะครับ ถ้าผิดตรงนั้น ก็ยังแก้ไขไม่ได้อยู่ดี
อย่างผมให้ asp ไปดึงมันออกมา เขียน asp ให้สั่ง browser ให้แสดงผลด้วยรหัส tis-620
จึงเป็นเว็บบอร์ดนี้ ที่อ่านเขียนภาษาไทยได้เป็นปกติครับ
2 @R06968
ขอเรียนถามเพิ่มเติมครับ ในaccess ตั้งให้เป็น not null พอโอนไปใน mysql สามารถมีค่าว่างได้เกิดจากอะไรครับแล้วต้องแก้ไขอย่างไรครับ
3 @R06996
คงต้องทำเองด้วยมือแล้วล่ะมั้งครับ
ไม่ทราบว่าใช้วิธีใดโอน
ถ้าเป็น สร้าง SQL ก่อนจะ Import ได้ตรวจสอบหรือเปล่าครับ
VBA อ่าน SQL ได้ในระดับหนึ่ง
MySQL อ่าน SQL ได้ในอีกระดับหนึ่ง

จริงอยู่ แม้ SQL จะเป็นภาษากลางๆ ซึ่งเข้าร่วมหรือสามารถอ่านได้จากทุกๆ ชนิดฐานข้อมูล แต่ว่า...
ในแต่ละชนิดของฐานข้อมูล ยังมีข้อปลีกย่อยในเรื่องของความเข้าใจความหมายของคีย์เวอร์ด หรือเครื่องหมายวรรคตอน หรืออักขระพิเศษ หรือการแบ่งแยกบรรทัด ที่แตกต่างกัน

สรุปว่าผมไม่มีคำแนะนำใดๆ เพิ่มครับ นอกจากต้องไล่ตรวจแก้ไขเอาเอง หรือถ้ามันมีหลายๆ ฟิลด์หลายตาราง อาจต้อง หยุดฐานข้อมูล MySQL แล้ว เขียน SQL Alter แก้ไขมันทุกๆ ฟิลด์นั่นแหละครับ
4 @R07000
ขอบคุณครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3360s