Exzilla.net
Contact
Home -> Articles -> Case Study : Developing Multi Language Application with Oracle Database
 
Features
Forums
Files
Blogs
Case Study : Developing Multi Language Application with Oracle Database
Aug 29, 2001
Cupid
Author's Bio | E-Mail
Copyright (C) 2001 exzilla.net

กรณีที่เราต้องพัฒนา 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 วิธี คือ

    1. ใช้ Windows NT ภาษาที่ต้องการ
    2. ใช้ Windows 2000

Client : Windows NT

กรณีที่ลูกค้าใช้ Windows NT ถ้าเป็น Edition สำหรับภาษาต่างๆ ที่ต้องการ ส่วนใหญ่จะไม่มีปัญหาเรื่องการ Read/Write หรือ Encode ข้อมูล ทั้งนี้เพราะเมื่อคุณติดตั้ง Oracle Client ตัว Oracle Universal Installer จะกำหนดค่า NLS_LANG ตาม Windows Edition นั้น ๆ ให้ไว้ถูกต้องอยู่แล้ว แต่ถ้ามีปัญหาในการ Encode ข้อมูล เราต้องไปแก้ไข NLS_LANG ที่ Registry ให้ถูกต้อง ขั้นตอนคือ

  1. Run regedt32.exe ซึ่งส่วนใหญ่อยู่ที่ \winnt\system32\
  2. ไปที่ HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE > HOME0 > NLS_LANG
  3. กำหนดค่า 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 ข้อมูลไม่ถูกต้องด้วยเช่นกัน

เราสามารถแก้ปัญหานี้ได้ง่ายๆ โดย

  1. ไปที่ Start > Setting > Control Panel > Regional Options เลือก General Tab ในส่วน Language setting for the system เลือกภาษาต่างๆ ที่ต้องการ รวมทั้งภาษาที่เราต้องการ Read/Write ข้อมูลด้วย สมมติเราต้องการให้ Read/Write ข้อมูลที่เป็นภาษาไทยได้ถูกต้อง เราก็ต้องเลือก Thai ด้วย
  2. จากนั้น กดปุ่ม Set default… จะมีหน้าจอ Select System Locale ขึ้น ในช่อง Select the appropriate locale เราก็เลือกภาษาที่เราต้องการ เช่น Thai แล้วกดปุ่ม Ok
  3. ที่หน้าจอ Reginal Options จะมีหน้าตาดังรูป
  4. จากนั้นไป 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

 
 
{exzilla.net -- e-development QuickStart --}



Copyright (c) 2001-2005 - Exzilla.net -  All Rights Reserved.
Contact Us | Privacy Policy | Terms & Conditions