วันศุกร์ที่ 25 กุมภาพันธ์ พ.ศ. 2554

Oracle How To: Change character set ให้อ่านภาษาไทยได้

การแก้ Oracle ให้อ่านภาษาไทยได้นั้น จะแบ่งออกเป็น 2 ส่วน คือ 
1. ฝั่ง client 
2. ฝั่ง server

โดยการที่จะทำให้อ่านภาษาไทยได้ต้อง set character set ทั้งที่ client และ server ประกอบกันทั้งคู่

วิธีการ set ทางฝั่ง client มีดังนี้

1. ทำการแก้ไขใน reg edit ที่ My Computer\HKEY_LOCAL_MACHINES\SOFTWARE\ORACLE\KEY_OraDb10g_home1 โดยแก้ NLS_LANG ให้เป็น THAI_AMERICA.TH8TISASCII

โดย THAI_AMERICA เนี่ย ตัวหน้า คือ ภาษาของพวกข้อมูลที่แสดง ส่วนตัวหลังจะเป็นภาษาของระบบ เช่น พวก error message

จบละ

ส่วนวิธีการ set ทางฝั่ง server มีดังนี้

1. เริ่มจาก query ก่อนเพื่อดู character set ของ server ก่อน โดยใช้ sql

SELECT * FROM NLS_DATABASE_PARAMETERS;


จะเห็นว่ามี NLS_CHARACTERSET และ NLS_NCHAR_CHARACTERSET ซึ่งทั้ง 2 ค่าต้องเป็นอย่างในรูป (ุTH8TISASCII และ AL16UTF16 ตามลำดับ) ซึ่งถ้าไม่ใช่ก็ต้อง set ใหม่ 

2. ทำการ set ค่าโดยเข้าใช้ SQLPlus ผ่าน command line ดังนี้

 2.1 ใช้ sqlplus ต่อ database ด้วย command
C:\> sqlplus dbusername/dbpassword@dbservice
โดยตัว service นี้ดูจากในไฟล์ TNSNAME.ORA

2.2 เข้า mode sysdba
SQL> connect sys/syspassword@dbservice as sysdba;
ถ้าเข้าเรียบร้อยแล้ว จะขึ้นว่า Connected.

2.3 รันคำสั่งแก้ไข character set ดังนี้
update props$ 
set value$='TH8TISASCII'
where name='NLS_CHARACTERSET';
แล้วมันจะขึ้นว่า 1 row update ก็ commit ซะ

3. restart oracle service แล้วก็จะใช้ได้แล้ว

4. ส่วน NLS_NCHAR_CHARACTERSET ก็ทำเหมือนกัน แค่เปลี่ยน sql สุดท้าย

จบฮะ

ปล. Oracle 10g
reference: http://www.narisa.com/forums/index.php?showtopic=14704

ไม่มีความคิดเห็น:

แสดงความคิดเห็น