• Perl Oracle 中文乱码的问题


    事情是这个 样子的,首先从数据库中取出一些数据,然后经过简单的处理在将这些数据入库,但是在数据在数据库中呈现为乱码。
    在控制台输出为正常,日志里也为正常,但是在数据库中就为乱码。
    (最为神奇的是在前期的调试过程中数据是可以正常显示的。)
     
     
    以下为处理步骤:
     
    1、怀疑是编码的问题,按照网上一般的说法是因为入库的编码和数据库中的编码不一致造成的。
    数据库中的编码为:
    select userenv('language') from dual
    SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    当前的客户端为的环境为:
    env|grep LANG
    LANG=zh
    NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    无论是这个还是设置为:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280都不行
     
    2、编码尝试过程
    数据库乱码为:脧脗脨脨脳陇虏篓赂忙戮炉
    从数据库中手工取出乱码,经过PERL 处理过程为:
     
    将执行的SQL写入文本打开也可以正常显示。
    my $str="脧脗脨脨脳陇虏篓赂忙戮炉";
     
     
    print decode("utf8",$str)," ";
    结果显示正常
     
    3、推论
    由于数据库中的编码为gbk,而perl中默认的处理环境为:utf8,个人认为应该是这个问题...
    但是经过encode("gbk")
        decode("gbk")
        encode("gbk", decode("utf8"))
        encode("utf8",decode("gbk"))
              等方法均不能解决
    4、将执行环境设为gbk use encoding "gbk";
    解决了入库的乱码问题,但是对这个解决方法不是很满意。
        
    脧脗脨脨脳陇虏篓赂忙戮炉bk
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    linux学习笔记--20150122
    破解LR11 sentinel stage failed
    Linux部署环境初学(Resin、jdk)
    MongoDB操作
    TestNG
    在iOS8 下用Swift 创建自定义的键盘
    iOS 8下简单,可交互式的通知
    设计模式:策略模式
    用Swift创建一个自定义,可调整的控件
    iOS7状态栏上有趣的渐变遮罩
  • 原文地址:https://www.cnblogs.com/wangn/p/3423703.html
Copyright © 2020-2023  润新知