这个问题是我曾经在使用中遇到的,在网上搜了一下,发现很多人都遇到过,并且也说明了很多解决方法。引起这个问题是有很多种可能的,现在我将在网上收集的资料结合我自己的解决经验总结一下,希望对大家有帮助。
我用的是oracle10.2
问题的出现牵涉到一个字符集的概念,先做个简要介绍,深入的知识就自己google吧
影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:
NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:
Language 指定客户端消息的语言,territory 指定客户端的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK
查看客户端字符集参数:select * from nls_session_parameters;
在网上介绍的很多方法只能适用一次,再次登录数据库后,又需要修改。
在windows下直接修改注册表可达到一劳永逸的效果:(建议修改前请关闭数据库)
Regedit.exe--HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0/NLS_LANGUAGE
如果是默认安装oracle的话,NLS_LANGUAGE这一项的值应该是SIMPLIFIED CHINESE_CHINA.ZHS16GBK(属于中文环境)
双击修改其值为:AMERICAN_ AMERICA.ZHS16GBK (英文环境)
重启数据库问题解决。
注:US7ASCII是ZHS16GBK的子集,至于选择哪个字符集,依据自身需要。