解决windows下oracle字符显示乱码问题
2013-08-30 17:37
295 查看
解决windows下oracle字符显示乱码问题
修改DOS字符集,可以防止DBCA,NETCA这些软件在运行时报错,在注册表修改
HKEY_CURRENT_USER/Console/%SystemRoot%_system32_cmd.exe
再双击右边CodePage选项将数值将fde9改为十六进制3a8或十进制"936
十六进制"000003a8"或十进制"936",表示“936 (ANSI/OEM - 简体中文 GBK)”
十六进制"000001b5"或十进制"437",表示“437 (OEM - 美国)”。
查看:
SQL> select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from
2 (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,
3 (select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,
4 (select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3;
TAB1.AA||'_'||TAB2.BB||'.'||TAB3.CC
-----------------------------------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
修改:
UPDATE sys.PROPS$ SET VALUE$='SIMPLIFIED CHINESE' where name='NLS_LANGUAGE';
UPDATE sys.PROPS$ SET VALUE$='CHINA' where name='NLS_ISO_CURRENCY';
再次查看:
SQL> select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from
2 (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,
3 (select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,
4 (select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3;
TAB1.AA||'_'||TAB2.BB||'.'||TAB3.CC
-------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
注册表:报到KEY_OraDb11g_home1
修改NLS_LANG的值 :SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(下面来自网络,地址忘了)
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language: 指定服务器消息的语言, 影响提示信息是中文还是英文
Territory: 指定服务器的日期和数字格式,
Charset: 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
1.修改DOS字符集:
修改DOS字符集,可以防止DBCA,NETCA这些软件在运行时报错,在注册表修改HKEY_CURRENT_USER/Console/%SystemRoot%_system32_cmd.exe
再双击右边CodePage选项将数值将fde9改为十六进制3a8或十进制"936
十六进制"000003a8"或十进制"936",表示“936 (ANSI/OEM - 简体中文 GBK)”
十六进制"000001b5"或十进制"437",表示“437 (OEM - 美国)”。
2.修改服务器端Language和Territory值:
因为DML的脚本是以中文格式做插入的,脚本不能动,所以需要修改服务器端,不然会报 ORA-01843.查看:
SQL> select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from
2 (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,
3 (select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,
4 (select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3;
TAB1.AA||'_'||TAB2.BB||'.'||TAB3.CC
-----------------------------------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
修改:
UPDATE sys.PROPS$ SET VALUE$='SIMPLIFIED CHINESE' where name='NLS_LANGUAGE';
UPDATE sys.PROPS$ SET VALUE$='CHINA' where name='NLS_ISO_CURRENCY';
再次查看:
SQL> select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from
2 (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,
3 (select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,
4 (select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3;
TAB1.AA||'_'||TAB2.BB||'.'||TAB3.CC
-------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
3.修改NLS_LANG
注册表修改或临时设环境变量。注册表:报到KEY_OraDb11g_home1
修改NLS_LANG的值 :SIMPLIFIED CHINESE_CHINA.ZHS16GBK
注:关于NLS_LANG的说明:
(下面来自网络,地址忘了)影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language: 指定服务器消息的语言, 影响提示信息是中文还是英文
Territory: 指定服务器的日期和数字格式,
Charset: 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。
相关文章推荐
- Oracle_sqlplus中文显示乱码的问题的解决
- LED点阵显示,有关特殊国别(阿拉伯,希伯来,泰文)字符排版和乱码问题解决
- c# 调用log4net,解决中文字符显示乱码的问题
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- SQLServer乱码问题的分析及解决方法(中文字符被存入数据库后,显示为乱码)
- Windows 控制台(console)输出宽字符(解决中文输出乱码问题)
- oracle客户端,plsql出现字符乱码问题解决方法
- 解决windows的控制台显示utf8乱码的问题
- SQLServer乱码问题的分析及解决方法(中文字符被存入数据库后,显示为乱码)
- 解决Elixir在windows控制台中汉字显示乱码的问题
- SVN+Apache在windows下http访问 显示中文乱码问题的解决方法
- php 中文字符入库或显示乱码问题的解决方法
- 解决 GitHub For Windows 客户端软件中代码的中文显示乱码问题 (Git/GitHub)
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- 请教一个问题,Log4Net记录日志到Oracle显示中文乱码如何解决?
- 解决JSP引入JS文件后,JS文件中字符在页面上显示为乱码问题
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- smb服务共享在windows下中文字符乱码问题的解决
- 也谈windows下cx_Oracle的配置,环境连接乱码种种问题最终解决
- php 中文字符入库或显示乱码问题的解决方法