首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入探讨oracle字符编码问题,关于NLS_LANG

最近,好不容易用plsql developer连接上64位oracle了,不过有弹了一个错误: NLS_LANG在客户端不能确定,字符集转变将造成不可预期的后果 ?...我系统注册表有NLS_LANG键值。 看来得添加环境变量了,如下图: ? 添加环境变量后,经过测试,加载成功。 此时,如果操作本地oracle数据库的话,提示肯定是中文的: ? ?...如果你通过本地plsql developer操作远程数据库,提示是英文的话,就得看看远程系统nls_lang变量是什么的了: ?...远程系统nls_lang变量是AMERICAN_AMERICA.ZHS16GBK,所以提示是英文的了: ? 加载成功的结果可以在plsql developer中看到: ?...v$nls_parameters就表示的是本地nls_lang设置了: ?

1K30
您找到你想要的搜索结果了吗?
是的
没有找到

字符集问题的初步探讨(四)

在导出操作时,非常重要的是客户端的字符集设置,也就是客户端的NLS_LANG设置。 NLS_LANG参数由以下部分组成: NLS_LANG=_....SQL> 查看客户端NLS_LANG设置可以使用以下方法: Windows使用: echo %NLS_LANG% 如: E:/>echo %NLS_LANG% AMERICAN_AMERICA.ZHS16GBK...Unix使用: env|grep NLS_LANG 如: /opt/oracle>env|grep NLS_LANG NLS_LANG=AMERICAN_CHINA.ZHS16GBK Windows...导出使用的字符集将会记录在导出文件中,当文件导入时,将会检查导出时使用的字符集设置,如果这个字符集不同于导入客户端的NLS_LANG 设置,字符集将根据导入客户端NLS_LANG设置进行转换,如果必要,...2.源数据库和目标数据库字符集不同 如果我们导出时候使用的NLS_LANG是和源数据库相同的字符集,那么导入时就可以设置客户端NLS_LANG等于导出时使用的字符集,这 样转换只发生在数据库端,而且只发生一次

56230

字符集问题的初步探讨(六)-----乱码的产生

在传输过程中,客户端NLS_LANG主要用于进行转换判断 如果NLS_LANG等于数据库字符集,则不进行任何转换直接把字符插入数据库 如果不同则进行转换,转换主要有两个任务 如果存在对应关系,则把相应二进制编码经过映射后...数据库字符集,在和客户端NLS_LANG不同时,会把经过NLS_LANG转换的字符进行进一步处理 对于?(即不存在对应关系的字符)直接以?...以下我们来看一下最为常见的字符集及乱码的产生: 1.当NLS_LANG字符集与数据库字符集不同,同时NLS_LANG不同于Server端字符集设置 在这种情况下,存在两种可能: 客户端输入的字符在NLS_LANG...转换时,A4对应了NLS_LANG中的‘¤’,这一步的转换产生了错误映射。...由于数据库字符集不 同于NLS_LANG设置,这时进一步的转换发生了,存入数据库的编码变成了C2A4,虽然同NLS_LANG进行了正确的转换,但是客户端录入的数据已经 损坏或者丢失了。

56920

【Oracle字符集】乱码的产生原理

在传输过程中,客户端NLS_LANG主要用于进行转换判断。...数据库字符集,在和客户端NLS_LANG不同时,会对经过NLS_LANG转换的字符进一步处理:对于?(即不存在对应关系的字符)直接以?...NLS_LANG字符集与数据库字符集不同 当NLS_LANG字符集与数据库字符集不同,且NLS_LANG不同于客户端字符集设置时,存在以下两种可能。...1、客户端输入的字符在NLS_LANG中没有对应的字符,这时无法转换,NLS_LANG使用替换字符替代这些无法映射的字符(这一步转换在TTS中完成),在很多字符集中这个替代字符就是“?”。...当客户端在WE8ISO8859P15字符集时,输入欧元符号€,这时客户端NLS_LANG和数据库端字符集不同,进行第一次转换,客户端€符号编码是A4,在NLS_LANG转换时,A4对应了NLS_LANG

1.8K70

回显字符集显示乱码的问题

一、系统字符集显示乱码 1.1 echo $LANG 查看系统字符集 1.2 根据系统字符集,CRT设置对应的字符集编码 二、sqlplus 字符集乱码 2.1 echo $NLS_LANG 查看设置值...2.2 根据系统字符集,设置对应的NLS_LANG变量 一、系统字符集显示乱码 系统输入命令回显中文会显示乱码,表现如下: ``` # df -h 鏂囦欢绯荤粺 瀹归噺 宸茬敤...69114 SQL> 2.1 echo $NLS_LANG 查看设置值 echo NLS_LANG $ 一般是没有设置NLS_LANG变量或者设置的值不正确。...2.2 根据系统字符集,设置对应的NLS_LANG变量 比如,这里系统字符集为utf8,NLS_LANG可以设置为: export NLS_LANG=american_america.utf8...上面设置sqlplus的回显是英文,如果想sqlplus回显为中文,可以设置为: export NLS_LANG="simplified chinese_china.utf8" 此时再次登陆sqlplus

62430

相克军_Oracle体系_随堂笔记013-字符集

如果确定数据库只是中国人用(只有中英文相关字符)的话,就采用ZHS16GBK.. sql*plus客户端(设置原则:与所在操作系统字符集一致): windows:一般都是gbk,即chcp结果为936 set NLS_LANG...=american_america.zhs16gbk 语言和地区为中文中国的话,set NLS_LANG=simplified chinese_china.zhs16gbk linux:一般为utf-8...,即echo $LANG 结果为en_US.UTF-8 或zh_CN.UTF-8 export NLS_LANG=american_america.utf8 测试:客户端Linux,系统字符集为zh_CN.UTF...-8 正确设置: export NLS_LANG=american_america.utf8 select dump('靖宇',1016) from dual; insert into t2 values...(1,'靖宇'); commit; 错误设置: export NLS_LANG=american_america.zhs16gbk select dump('靖宇',1016) from dual;

63710

Oracle 11g即时客户端在windows下的配置

-11.2.0.3.0\instantclient_11_2)添加到PATH中(注意位于其他Oracle目录之前),增加系统环境变量TNS_ADMIN,系统环境变量ORACLE_HOME,系统环境变量NLS_LANG...instantclient_11_2 TNS_ADMIN=D:\Program Files\instantclient-basic-nt-11.2.0.3.0\instantclient_11_2 NLS_LANG...CHINESE_CHINA.AL32UTF8 注:语言编码要与Oracle服务器设置的一致,可以通过 select userenv('language') from dual; 查询服务器的语言编码; NLS_LANG...language’) from dual; 结果如下:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 2、客户端字符集 在windows平台下,就是系统的环境变量中设置系统环境变量NLS_LANG...还可以在dos窗口里面自己设置,比如: set NLS_LANG =SIMPLIFIED CHINESE_CHINA.ZHS16GBK 这样就只影响这个窗口里面的环境变量。

1.9K20
领券