Exzilla.net
Contact
Home -> Articles -> Send and Receive Data in MS874 Streams for JSP/Servlet Applications
 
Features
Forums
Files
Blogs
Document ID: # JSP-Feb-1 July 20, 2004
Document Title : ตัวอย่างการใช้งานภาษาไทยกับ JSP, JDBC thin และ Oracle Database

Document Details :

ตัวอย่างการใช้งานภาษาไทยกับ JSP, JDBC thin และ Oracle Database

Environment ที่ใช้ทดสอบในตัวอย่างนี้

1. Oracle database 8.1.6, TH8TISASCII Character Set ทำงาน บน Tru64 4.0f

2. Oracle JDBC 8.1.6 thin

3. Apache + Jakarta-tomcat-3.2.1 ทำงาน บน MS-windows

4. Java Version 1.3.0

5. Browser IE5.x และ Netscape 4.7, encoding แบบ MS874 ทำงาน บน MS-windows

The Problem

เนื่องจากขั้นตอนการ Convert ที่จะทำให้ผิดพลาดนั้นมีได้ทั้งส่วน จาก OS ไปยัง Java จาก Java ไปยัง Database และในทางกลับกัน [1]

OS <-> JAVA <-> DB

JDBC drivers provide transparent support for NLS

แต่เนื่องจากในส่วน Java ที่ติดต่อกับ Database โดยผ่าน JDBC thin นั้น ในกรณีที่ Database ไม่ใช้ ASCII หรือ ISO-Latin-1 Character set จะมีการ Conversion ไปเป็น UTF8 ที่ฝั่ง Server Side ส่วนในฝั่ง client นั้นจะทำการ Convert จาก UTF8 ไปเป็น UCS-2 ขั้นตอนการ convert เหล่านี้ จะทำงานอย่าง Automatic อยู่แล้ว

Send and Receive Data in MS874 Streams for JSP/Servlet Applications [2]

Send Data in MS874 Streams

เพื่อให้การแสดงข้อมูลที่บน Browser ฝั่ง Client ที่มีการ encoding ด้วย MS874 ที่ถูกต้อง เราต้องมีการกำหนด ที่HTML Page โดยเราจะใช้ Page Directive contentType parameter ในการ set MIME type ของ JSP Page ซึ่ง MIME type นี้จะถูกนำไปใช้กับ HTTP response ณ ตอนที่เราทำงาน ( Runtime )

Character Encoding ที่เราใช้ก็ต้องเป็น IANA encoding (IANA. Internet Assigned Numbers Authority )

อย่างเช่น UTF-8 หรือ WINDOWS-874

<%@ page contentType="text/html;charset=WINDOWS-874"%>

จากตัวอย่าง นอกจากจะเป็นการ บอก Browser ให้แสดงเป็น HTML Page ในลักษณะ WINDOWS-874 decoding จะยังรวมไปถึงการ บอก JspWriter ให้ Print ข้อมูลออกเป็น MS874 encoding ด้วย (การใช้งานแบบนี้จะใช้งานได้ เฉพาะ MS-windows เท่านั้น ถ้าต้องการใช้งาน Platform อื่นด้วย แนะนำให้ใช้งาน TIS-620 แต่ในตัวอย่างนี้ได้ทดสอบ เฉพาะ WINDOWS-874)

Receive Data in MS874 Streams

เมื่อเรามีการ key ข้อมูลผ่านทาง HTML form เราก็ต้องมีส่วนของการควบคุมให้ข้อมูลที่ Key เข้ามามีการ Encoding ที่ถูกต้อง เนื่องจากข้อมูลที่เข้ามา ผ่านทาง JSP นั้นจะเป็น ISO-8859-1 เราจึงจำเป็นต้อง encoding กลับไปเป็น MS874 ได้โดย

<%

String omyEname=request.getParameter("ENAME");

String myEname = new String(omyEname.getBytes("ISO8859_1"),"MS874");

%>

จากตัวอย่าง Code ด้านบนเราก็สามารถนำ myEname ไปใช้งานได้อย่างปกติอย่างเช่น Insert ข้อมูลเข้า Database เป็นต้น

Sample Complete Code:

ตัวอย่าง Source Code ที่สมบรูณ์ กดที่นี่

 

Related Documents ( download from otn )

For additional information on using NLS with the JDBC drivers, refer to the

"JDBC Developer's Guide and Reference", (A64685-01), Chapter 5, Advanced

Topics, 'Using NLS'.

For general information about NLS, such as the NLS_LANG environment variable,

refer to the "National Language Support Guide", (A67789-01).

References:

[1] Technical White Papers "Migrating Oracle Internet Applications to Support Unicode, An Oracle Technical White Paper, August 2000, http://technet.oracle.com/products/oracle8i/pdf/ecomwp.pdf

[2] Technical white Paper "Character Integrity Issues in NLS Environment", http://technet.oracle.com/tech/java/sqlj_jdbc/htdocs/nlsalert.html

[3] More resources from java.sun.com
" http://java.sun.com/docs/books/tutorial/i18n/text/string.html "
" http://java.sun.com/docs/books/tutorial/i18n/ "
" http://java.sun.com/j2se/1.4.1/docs/guide/intl/encoding.doc.html "

 




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