在做web系统中多语言版本时数据库字符集的问题
环境:win2k+oracle9i+tomcat4.1.18
安装oracle的时候选择的是UTF-8
在本机(既是server也是client)设置regedit
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0
SET NLS_LANG = AMERICAN_AMERICA.AL32UTF8
在环境变量中设置
NLS_LANG = AMERICAN_AMERICA.AL32UTF8
通过sqlplus
select * from sys.props$ where name='nls_language';显示
nls_language
american
language
select * from nls_database_parameters;显示
PARAMETER VALUE
------------------------------ -----------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
PARAMETER VALUE
------------------------------ -----------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 9.2.0.1.0
select userenv('language') from dual;显示
AMERICAN_AMERICA.AL32UTF8
在开发过程中jsp全部用
<%@ page contentType="text/html;charset=UTF-8"%>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
在java代码中则不进行任何字符集的转换
tomcat运行后,插入中文字符后,再查询显示到jsp,一切正常。
但这个时候去db用sqlplus查询时是不正常的中文字符。
另外一个大问题就是在初期安装db script后进行insert的中文字符的数据字典表的脚本初始化,初始化后在dbsqlplus查询能显示正常中文字符,但这个时候通过java代码查询返回到jsp却是乱码。不知道如何解决,请大哥们指导指导!!