• 处理乱码的问题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.客户端的操作系统需要是英文的,如果是中文的操作系统则显示也会是乱码。

     

  • 相关阅读:
    Affinity Propagation (AP)近邻传播聚类
    40道JAVA经典算法面试题(答案)
    C语言课程设计
    2.2.2 redis、memcached、nginx 网络组件
    【Linux】Git使用
    synchronized 与 spring事务 @Transactional 的介绍使用
    7个技巧帮助你进行更有吸引力的脉动/脉搏调查
    单臂路由的配置
    Java POI操作excel
    Google云计算原理与应用(一)
  • 原文地址:https://blog.csdn.net/jolly10/article/details/126179167