【问题标题】:json_decode() php manage special characters TM symboljson_decode() php 管理特殊字符 TM 符号
【发布时间】:2015-12-05 01:54:38
【问题描述】:

所以我有一个字符串让我们输入$string = {"name":"Whatever\u2122" } 问题是当我使用函数json_decode($string, true) 时,它会将\u2122 替换为奇怪的字符。我需要它保持像 \u2122,我知道 json 使用 utf-8,但是有什么方法可以避免这种转换?

顺便说一下,\u2122对应TM的符号

【问题讨论】:

    标签: php json


    【解决方案1】:

    先将单反斜杠替换为双反斜杠,然后解码json字符串,如下:

    $string = str_replace("\\", "\\\\", $string);
    var_dump(json_decode($string, true));
    

    输出:

    array (size=1)
      'name' => string 'Whatever\u2122' (length=14)
    

    【讨论】:

    • 为什么不用单引号来避免写这么多反斜杠呢?
    • @AlvaroFlañoLarrondo 单引号有什么区别吗?我没有测试它。
    • 使用单引号不需要对每个反斜杠进行转义,所以可以写$string = str_replace('\', '\\', $string);
    • @AlvaroFlañoLarrondo 我试过你的方法,但它给了我这个语法错误,Parse error: syntax error, unexpected '\'
    • 对不起,我完全错了。稍后我将删除我的 cmets,因为它们没有用,并且可能会使某人感到困惑。再次,对不起
    猜你喜欢
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2018-09-24
    • 2019-10-07
    • 2017-01-25
    相关资源
    最近更新 更多