oracle11g控制台乱码,【Oracle11g】小记乱码问题

Oracle乱码是个老难题,涉及到各个终端字符集的转码,想要了解清楚这个问题需要储备的知识点太多了,需要了解字符集之间的兼容性,有超级的说法。这里就不详述此类问题了,牵扯的太多。

环境:

服务器 rhel 6.8

dump 文件

plsql dev工具

一般的做法都是把dmp文件上传到服务器,然后远程CRT登录到服务器,sqlplus 登录到数据库执行脚本。

这里需要了解几个终端的字符集:

1、dmp字符集 ,这里可以通过文件编译器转换dmp文本编码集,我这里设置的是utf8。

2、CRT 终端字符集,我设置的是utf8

3、服务器字符集 ,LANG=en_us

4、数据库客户端字符集,也就是sqlplus 字符集,sqlplus字符集一般都是按照系统NLS_LANG设置,我这里是ZHS16GBK

5、数据库字符集 ,可以通过select * fromv$nls_parameters;来查询,我这里设置的是AL32utf8。

使用CRT工具登录到远程服务器,所以如果想查看dmp文件,那么这里就需要设置CRT字符集,不然会乱码。

服务器字符集en_us,这里在显示中文字符的时候会使用这个参数,一般推荐使用en_us.utf8设置。

按照以上步骤设置完,最起码在服务器上查看dmp文件不会有问题,但是这并不代表插入到数据库就正常,这里牵扯到转码的问题,超级转子集正常,子集转超级就会乱码。

如果数据库已有的中文字符集,在客户端可以正常查看,因为zhs16gbk 转utf8可以正常转换,如果UTF8转换gbk就会出问题。

总之一个原则:保证客户端,服务端编码集一致,确保数据库客户端nls_lang跟数据库服务端字符集一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值