处理乱码的问题oracle字符集WE8MSWIN1252和WE8ISO8859P1

WE8MSWIN1252是WE8ISO8859P1的超集,一个需求是将带有全角’符号的字符sqlldr到数据库,在过程中遇到一些问题,记录下来。

csv文件的内容截图如下:

 1.由于这个是全角的引号,本地的数据库的字符集是WE8MSWIN1252和WE8ISO8859P1,如果客户端的NLS_LANG和服务器一致的,也是WE8MSWIN1252或WE8ISO8859P1,这两个字符集处理这个字符时还是有区别的,先测试字符集是WE8MSWIN1252的数据库。

将sqlldr的客户端和toad的客户端都设成和数据库一致:

export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

sqlldr导入后会显示乱码

这时需要将nls_lang改成AL32UTF8再导入后就能正常显示:

export  NLS_LANG=AMERICAN_AMERICA.AL32UTF8
导入后的的截图:

 

2. 接着测试数据库字符集是WE8ISO8859P1的情况

查看当前数据库的字符集:

sqlldr客户端如果是WE8ISO8859P1肯定不行,显示乱码

用AL32UTF8测试一下,export  NLS_LANG=AMERICAN_AMERICA.AL32UTF8,sqlldr导入后居然还是乱码:

 不过在将当前column的datatype从varchar2改成nvarchar2后,就能显示正常了

 3.总结:

1.sqlldr导入时需要将nls_lang改成AL32UTF8,使导入进数据库的格式是正确的。

2.数据库的字符集WE8MSWIN1252处理这种双字节的字符时,datatype可以不是nvarchar2,而WE8ISO8859P1则需要改成nvarchar2。

3.客户端的操作系统需要是英文的,如果是中文的操作系统则显示也会是乱码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值