zoukankan      html  css  js  c++  java
  • 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
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    迭代平方根
    windows怎么进如debug调试
    wxwidgets安装环境配置
    【android官方文档】与其他App交互
    Android ImageView图片自适应
    Gridview的stretchMode详解附自动宽度
    Activity生命周期解说
    一些问题
    android 文件读取(assets)
    android:scaleType属性
  • 原文地址:https://www.cnblogs.com/wangn/p/3423703.html
Copyright © 2011-2022 走看看