Oracle数据库中中文汉字显示乱码问题
Oracle数据库中中文汉字显示乱码问题
摘 要
字符集的设置不当是影响ORACLE数据库汉字显示的关键问题。本文从实践经验出发,介绍了ORACLE关于字符集的分类、构成及设定方法,分析了ORACLE数据库汉字显示乱码的常见现象及原因,并针对各种现象及原因提出了行之有效的解决办法。
关键字: ORACLE 字符集 中文 乱码 解决 UTF-8
1 引言
ORACLE数据库作为业界领先的数据库产品,近年来在国内大中型企业中得到了广泛的应用。虽然ORACLE数据库产品本身在本地化方面已做得相当成熟,但还是有不少用户反应汉字显示乱码的问题。如对同一数据库不同的用户对同一表中的username查询却得出了不同的结果: “ORACLE??????”和“ORACLE中国有限公司”,显然结果中将中文字符显示为乱码,那么为什么呢?字符集的设置不当是影响ORACLE数据库汉字显示的关键问题。
2 关于字符集
字符集是ORACLE为适应不同语言文字显示而设定的。用于汉字显示的字符集主要有ZHS16CGB231280、ZHS16GBK、US7ASCII和UTF-8等。字符集同时存在于服务器端和客户端。服务器端字符集是在安装ORACLE时指定的,字符集登记信息存储在ORACLE数据库字典的V$NLS_PARAMETERS表中;而客户端字符集是在系统注册表(WINDOWS系统)或在用户的环境变量(UNIX系统)中设定的。
3 字符集的构成与设定
字符集的构成与设定方式分为客户端与服务器端两种:
(1)客户端字符集的构成与设定。客户端的字符集是由当前用户的环境变量NLS_LANG设定的。环境变量NLS_LANG的构成:NLS_LANG=language_territory.charset
其中:language 指定服务器消息的语言
territory 指定服务器的日期和数字格式
charset 指定字符集
三个成分可以任意组合,例如:
AMERICAN_AMERICA.US7SCII
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
AMERICAN_AMERICA.ZHS16GBK
客户端字符集的设定方法针对不同操作系统设定方法稍有不同:
WINDOWS系统是在注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG中设定;
UNIX系统是在当前用户的环境变量中设定,如在当前用户的profile文件中增加一行如下代码:
&
相关文档:
[精华] ORACLE的几种启动方式
http://www.chinaunix.net 作者:wuwenlong 发表于:2003-07-27 16:58:57
【发表评论】 【查看原文】 【Oracle讨论区】【关闭】
1、startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
读取 ......
ADDM (Automatic Database Diagnostic Monitor) implements the Oracle performance method and analyzes statistics to provide automatic diagnosis of major performance problems. Because ADDM can significantly shorten the time required to improve the performance of a system, it is one of the most used perf ......
由于系统中数据不断增多,使得原用的like语法来进行查询法律全文变得十分缓慢,因此在原有系统中增加了全文检索的功能。
全文检索功能依赖于Oracle Text。首先保证Oracle Text组件在数据库中已安装。然后建立索引
Sql代码
--法律全文内容字段增加索引
create index idx_flqw_nr on flqw(nr) indextype ......