你显示数据的时候后再用JS unescape不就行了?

解决方案 »

  1.   

    我在网上查到一个下面的转换函数~ 
    不知为什么运行错误:(<?php
    function uniDecode($str, $charcode)
    {
    $text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",toUtf8,$str) ;
    return mb_convert_encoding($text, $charcode, 'utf-8') ;
    }
    function toUtf8($ar)
    {
    foreach($ar as $val)
    {
    $val = intval(substr($val,2),16) ;
    if($val < 0x7F)
    { // 0000-007F
    $c .= chr($val) ;
    }
    elseif($val < 0x800) 
    { // 0080-0800
    $c .= chr(0xC0 | ($val / 64)) ;
    $c .= chr(0x80 | ($val % 64)) ;
    }
    else
    { // 0800-FFFF
    $c .= chr(0xE0 | (($val / 64) / 64)) ;
    $c .= chr(0x80 | (($val / 64) % 64)) ;
    $c .= chr(0x80 | ($val % 64)) ;
    }
    }
    return $c ;
    }
    ?>
      

  2.   

    <script>
    function foo() {
      location = location.href+"?text="+escape("中文字符串");
    }
    </script>
    <input type=button onclick="foo()">
    <?php
    echo $text = $_GET['text'];
    echo uniDecode($text,'gbk');
    ...经测试无误,注意需要加载mb_string扩展函数库
      

  3.   

    TO xuzuning(唠叨) :        如何加载mb_string扩展函数库呢? 这个库是php中自带的吗?uniDecode($text,'gbk')仅对简体中文有效吗?
    如果我想对任何编码有效我该如何做呢?~~~~~~~~
      

  4.   

    如何加载mb_string扩展函数库呢? 这个库是php中自带的吗?
    是的,与其他扩展库的加载一样uniDecode($text,'gbk')仅对简体中文有效吗?
    支持多种编码,只要给出mb_convert_encoding认识的名字
      

  5.   

    TO xuzuning(唠叨) :    我用了 uniDecode($text, 'gb2312')调用函数~ 可是不支持繁体~~~~     我怎样才能使其兼容繁体呢?~~~~~
      

  6.   

    uniDecode($str, $charcode)

    $str是形如 %uxxxx%uxxxx%uxxxx...的字符串,该串就是js的escape函数产生的unicode编码的明文表示
    而unicode编码函盖目前已知的所有语言文字,并不存在“不知道繁体与简体的情况”$charcode是表示待转换成的编码类型
      

  7.   

    例如: escape("中華人民共和國")的值为 "%u4E2D%u83EF%u4EBA%u6C11%u5171%u548C%u570B"可是 uniDecode("%u4E2D%u83EF%u4EBA%u6C11%u5171%u548C%u570B", "gb2312") 的值为“中冿人民共和W”uniDecode("%u4E2D%u83EF%u4EBA%u6C11%u5171%u548C%u570B", "big5") 的值为 “い地チ㎝瓣”
      

  8.   

    1、gb2312是国标简体编码。你给出的串中含有繁体字,不在该编码范围内,当然有问题
    2、big5编码的文字要在big5语言环境中查看
    echo uniDecode("%u4E2D%u83EF%u4EBA%u6C11%u5171%u548C%u570B", "big5");
    并设置浏览器的语言为“big5”才能看到正确的显示
      

  9.   

    我想用xmlhttp来POST一个用户填写的输入框中的内容~~并用PHP写入数据库~~~
    必须用escape进入编码这个内容才不会出错~~ 可是我用什么办法还原呢?~~~
    xmlhttp.open("POST", xfile, false) ;
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") ;
    xmlhttp.send(strInfo) ;