กรณีที่เราต้องพัฒนา
Application เพื่อให้ลูกค้าจากหลากหลายประเทศใช้งาน แล้ว Application
นั้นต้อง support ภาษาตามประเทศนั้นๆ เช่น ภาษาญี่ปุ่น จีน อังกฤษ
ไทย เกาหลี เป็นต้น แต่ใช้ Database ร่วมกัน
ด้วยเงื่อนไขเช่นนี้
เราจึงเลือกออกแบบ Database Character Set ให้เป็น Unicode เพื่อให้สามารถรองรับข้อมูลหลายภาษา
และ Application ที่เราพัฒนาขึ้นมา สามารถ Run ได้ทั้งบน Windows
NT ภาษาต่างๆ และ Windows 2000
Setting
on Server Site
เพื่อที่เราสามารถพัฒนา
Application และใช้ Database เดียวกัน แล้วสามารถรองรับการ Read/Write
ข้อมูลหลายภาษา เราจึงเลือกกำหนดให้ Character Set ของ Database
ให้เป็น Unicode ซึ่งถ้าเป็น Oracle Database เราก็กำหนด Character
Set ให้เป็น UTF8 หรือ UTF16 (ซึ่ง Support ใน Oracle9i) ก็ได้
Setting
on Client Site
ที่
Client site สามารถใช้ Windows NT ภาษาต่างๆ หรือ Windows 2000 ก็ได้
เพียงแค่กำหนด Locale ให้ถูกต้อง
สมมติฐานของเราก็คือ
ในแต่ละ Client site จะสามารถติดตั้ง OS ได้เพียงภาษาเดียว เช่น
ที่ประเทศญี่ปุ่น ก็จะอาจจะใช้ Windows NT Japanese Edition ซึ่งสามารถ
Input ข้อมูลที่เป็นภาษาญี่ปุ่น หรือภาษาอังกฤษ ก็ได้ แต่ถ้าลูกค้าอยู่ที่ประเทศไทย
ก็ใช้ Windows NT Thai Edition ซึ่งสามารถ Input ข้อมูลที่เป็นภาษาไทย
และภาษาอังกฤษได้
ดังนั้นข้อกำหนดของเราคือ
ลูกค้าต้องการ Read/Write ข้อมูลภาษาใด ก็สามารถทำได้ 2 วิธี คือ
- ใช้
Windows NT ภาษาที่ต้องการ
- ใช้
Windows 2000

Client
: Windows NT
กรณีที่ลูกค้าใช้
Windows NT ถ้าเป็น Edition สำหรับภาษาต่างๆ ที่ต้องการ ส่วนใหญ่จะไม่มีปัญหาเรื่องการ
Read/Write หรือ Encode ข้อมูล ทั้งนี้เพราะเมื่อคุณติดตั้ง Oracle
Client ตัว Oracle Universal Installer จะกำหนดค่า NLS_LANG ตาม
Windows Edition นั้น ๆ ให้ไว้ถูกต้องอยู่แล้ว แต่ถ้ามีปัญหาในการ
Encode ข้อมูล เราต้องไปแก้ไข NLS_LANG ที่ Registry ให้ถูกต้อง
ขั้นตอนคือ
- Run
regedt32.exe ซึ่งส่วนใหญ่อยู่ที่ \winnt\system32\
- ไปที่
HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE > HOME0 >
NLS_LANG
- กำหนดค่า
NLS_LANG ให้ตรงกับ Character Set ที่เราต้องการ เช่น ข้อมูลภาษาไทย
ก็ต้องเป็น TH8TISASCII หรือข้อมูลที่เป็น Traditional Chinese
ก็ต้องกำหนด NLS_LANG ให้เป็น ZHT16BIG5 เป็นต้น (ดูรายละเอียดการ
Set NLS_LANG)
หมายเหตุ
: ถ้าลูกค้าใช้ Windows NT English Edition จะสามารถ Read/Write
ข้อมูลที่เป็นภาษาอังกฤษเท่านั้น
Client
: Windows 2000
กรณีที่ลูกค้าใช้
Windows 2000 ด้วยความที่ Windows 2000 รองรับหลายภาษา มันก็เป็นข้อดี
เราอาจสามารถ Input ข้อมูลเป็นภาษาต่างๆ ได้ถูกต้อง แต่เวลาที่เราดึงข้อมูลนั้นขึ้นมาแสดง
ข้อมูลกลับเป็น ????? นั่นเป็นเพราะเรากำหนด Locale ไม่ถูกต้อง ก็ทำให้การ
Encode ข้อมูลไม่ถูกต้องด้วยเช่นกัน
เราสามารถแก้ปัญหานี้ได้ง่ายๆ
โดย
- ไปที่
Start > Setting > Control Panel > Regional Options
เลือก General Tab ในส่วน Language setting for the system เลือกภาษาต่างๆ
ที่ต้องการ รวมทั้งภาษาที่เราต้องการ Read/Write ข้อมูลด้วย สมมติเราต้องการให้
Read/Write ข้อมูลที่เป็นภาษาไทยได้ถูกต้อง เราก็ต้องเลือก Thai
ด้วย
- จากนั้น
กดปุ่ม Set default
จะมีหน้าจอ Select System Locale ขึ้น ในช่อง
Select the appropriate locale เราก็เลือกภาษาที่เราต้องการ เช่น
Thai แล้วกดปุ่ม Ok
- ที่หน้าจอ
Reginal Options จะมีหน้าตาดังรูป

- จากนั้นไป
Check NLS_LANG ที่ Registry ว่าตรงกับภาษาที่เรา Set Default
ไว้หรือไม่ ซึ่งการ Setting ก็เหมือนกับ Windows NT
Remark
สำหรับบางท่านที่ใช้
Windows 2000 แล้วใช้ Notepad ใส่ข้อมูลภาษาไทยแล้ว Save แต่พอเปิด
File นั้นขึ้นมาอีกครั้ง ข้อมูลที่คุณใส่ไว้เป็นภาษาไทย กลับแสดงเป็น
????? การกำหนด Locale และ Default Language บนเครื่อง Client ที่เป็น
Windows 2000 ก็สามารถแก้ปัญหาการ save file ที่เป็น Local Language
หรือภาษาไทยได้ด้วยเช่นกัน
More
information
- Oracle9i
Globalization Support Guide Release 1 (9.0.1) Part Number A90236-02
Keywords:
UTF8
UTF16 NLS Multi Language windows 2000 windows NT encoding
|