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
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    [o] SQLite数据库报错: Invalid column C
    startActivityForResult和setResult详解
    [o] duplicate column name: _id 问题解决
    [O] SQLite数据库报错:no such column
    [原创] SQLite数据库使用清单(下)
    [原创] SQLite数据库使用清单(上)
    iOS CocoaPods详解之 Analyzing dependencies
    iOS UILabe的详细使用及特殊效果
    一个简单的socket通信小demo
    iOS Lable给文字添加中划线和下划线
  • 原文地址:https://www.cnblogs.com/wangn/p/3423703.html
Copyright © 2011-2022 走看看