GPU
V2EX  ›  PHP

php json encode 中文部分被替换为 unicode 码 ,应该怎么用最简单的方法解决?

  •  
  •   GPU · Sep 22, 2014 · 3861 views
    This topic created in 4431 days ago, the information mentioned may be changed or developed.


    代码如上 ,

    此代码json输出网页的东西是这样子的
    " {"msg":"username,password,domain \u53c2\u6570\u5fc5\u9009"}"


    完整版如下,


    14 replies  •  2014-09-24 09:01:03 +08:00
    anewg
    anewg
    Sep 22, 2014
    1
    5.4 之后 echo json_encode("中文", JSON_UNESCAPED_UNICODE);

    5.4 之前 echo json_encode(urlencode("中文"));接收端 json_decode 后再 urldecode
    GPU
    GPU
    OP
    Sep 22, 2014
    2
    @anewg 5.4 是什么意思?
    anewg
    anewg
    Sep 22, 2014
    3
    @GPU php版本5.4
    GPU
    GPU
    OP
    Sep 22, 2014
    4
    @anewg
    https://gist.github.com/anonymous/6d8f133df10314942724

    改了一下, 成这样子 ,输出正常 .不知道有没有可以写得更简化的呢?
    iyaozhen
    iyaozhen
    Sep 22, 2014
    5
    其实没关系的,接收的时候php_decode会把编码还原。
    js我用jquery接收,不用任何处理data.msg直接获取就行。
    一楼说的php5.4之后的JSON_UNESCAPED_UNICODE参数可以直接输出中文。
    zakokun
    zakokun
    Sep 22, 2014 via iPad
    6
    先把中文urlencode一下,处理完以后再转回来urldecode
    anewg
    anewg
    Sep 22, 2014❤️1
    7
    @GPU 你用5.4以上的php的话这样是最简了
    GPU
    GPU
    OP
    Sep 22, 2014
    8
    @anewg 嗯. 好的.
    bombless
    bombless
    Sep 23, 2014
    9
    我还以为是指读不出来unicode编码呢…
    这种编码算是一种惯例了,不明白为啥要改
    tmkook
    tmkook
    PRO
    Sep 23, 2014
    10
    function jsonEncode($arr){
    $json = json_encode($arr);
    return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $json);
    }

    放出我的必杀技!!!
    GPU
    GPU
    OP
    Sep 23, 2014 via iPhone
    11
    @tmkook 看不懂啊
    tmkook
    tmkook
    PRO
    Sep 23, 2014
    12
    @GPU echo jsonEncode(array("test":"中文")); 生成:{"test":"中文"}
    GPU
    GPU
    OP
    Sep 23, 2014
    13
    @tmkook 这个技能貌似真的很屌
    Actrace
    Actrace
    Sep 24, 2014
    14
    一个比较容易懂的做法是先把数组内的元素都用urlencode处理成不需要转换的字符串,然后生成JSON字符串后再用urldecode来对整个JSON字符串进行解码(中文等将被还原),类似于金属提纯.
    不过看了10楼的做法,感觉10楼效率上会有很大的优势,毕竟是正则替换,而且相对于上面提出的方案少了一个转换的流程.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   993 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 22:07 · PVG 06:07 · LAX 14:07 · JFK 17:07
    ♥ Do have faith in what you're doing.