2015-12-05 14 views
2

所以我有一个字符串让我们把$string = {"name":"Whatever\u2122" }事情是,当我使用函数json_decode($string, true)它将\ u2122替换为怪异的字符。我需要它保持像\ u2122,我知道json使用utf-8,但有什么办法可以避免这种转换?json_decode()php管理特殊字符TM符号

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

回答

2

先用双反斜杠替换单个反斜线,然后解码JSON字符串,像这样:

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

输出:

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

为什么不使用单引号避免写太多反斜杠? –

+0

@AlvaroFlañoLarrondo单引号有什么区别吗?我没有测试它。 –

+0

使用单引号没有必要扫描每个反斜杠,所以是的,你可以写'$ string = str_replace(''','\\',$ string);' –