解决Oracle 中文乱码.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:3 大小:22KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

解决Oracle 中文乱码.doc

解决Oracle中文乱码.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

解决Oracle中文乱码一、什么是oracle字符集Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息判虼涡颍?日期,时间,货币,数字,和日历自动适应本地化语言和平台。SELECT*FROMV$NLS_PARAMETERS12345678910111213141516171819NLS_LANGUAGESIMPLIFIEDCHINESENLS_TERRITORYNLS_CURRENCYRMBNLS_ISO_CURRENCYCHINANLS_NUMERIC_CHARACTERSNLS_CALENDARGREGORIANNLS_DATE_FORMATNLS_DATE_LANGUAGENLS_CHARACTERSETAL32UTF8NLS_SORTBINARYNLS_TIME_FORMATHH.MI.SSXFFAMDD-MON-RRHH.MI.SSXFFAMHH.MI.SSXFFAMTZRDD-MON-RRHH.MI.SSXFFAMTZRRMBUTF8DD-MON-RRSIMPLIFIEDCHINESE.,CHINANLS_TIMESTAMP_FORMATNLS_TIME_TZ_FORMATNLS_TIMESTAMP_TZ_FORMATNLS_DUAL_CURRENCYNLS_NCHAR_CHARACTERSETNLS_COMPBINARYNLS_LENGTH_SEMANTICSNLS_NCHAR_CONV_EXCPBYTEFALSE二、如何查询Oracle的字符集ORACLE有三方面的字符集,一是oracelserver端的字符集,二是oracleclient端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。--查看oracelserver端的字符集selectuserenv('language')fromdual;1SIMPLIFIEDCHINESE_CHINA.AL32UTF8--查看dmp文件的字符集用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:selectnls_charset_name(to_number('0354','xxxx'))fromdual--查看oracelclient端的字符集是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,比如:setnls_lang=AMERICAN_AMERICA.ZHS16GBK这样就只影响这个窗口里面的环境变量。Oracle字符集乱码问题析及解决办法一、问题描述SQLPlusWorkSheet是一个窗口图形界面的SQL语句编辑器,对于那些喜欢窗口界面而不喜欢字符界面的用户,该工具相对SQL/PLUS受到了很大的欢迎。但从Oracle8i以后,如果安装Oracle8i时选取的是别于英语的字符集,对于我们中国,通常会选取简体中文字符集(ZHS16GBK)安装成功后,,运行SQLPlusWorkSheet程序,会出现所有的中文显示以及查询结果均为乱码的情况。二、问题分析最初出现该问题,首先怀疑就是安装时字符集设置有问题,也就是说没有设置正确的简体中文字符集。首先检查数据库字符集,在SQL/PLUS中,运行下面的SQL语句,检查所连接数据库的字符集:SQL>selectuserenv('language')fromdual;USERENV('LANGUAGE')SIMPLIFIEDCHINESE_CHINA.ZHS16GBK查询结果发现数据库安装时所选字符集为简体中文ZHS16GBK,说明安装时字符集设置完全正确。第二步开始怀疑是用户客户端字符集问题,检查客户端注册表,打开注册表编辑程序(RegEdit),在HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/NLS_LANG,发现Oracle客户端字符集为AMERICAN_AMERICA.ZHS16GBK,设置也完全正确,可以排除是客户端字符集设置错误的问题。同时还有一个现象就是在同一个客户端机器上SQL/PLUS中的查询字符集显示完全正常,这也说明不是字符集设置问题,而是系统程序SQL/PlusWorksheet的问题。在Oracle8i以前的版本中,从来没