相关疑难解决方法(0)

PHP解码和编码带有unicode字符的json

我有一些json我需要解码,更改然后编码而不会弄乱任何字符.

如果我在json字符串中有一个unicode字符,它将无法解码.我不确定为什么因为json.org说字符串可以包含:any-Unicode-character- except-"-or-\-or- control-character.但它在python中也不起作用.

{"Tag":"Odómetro"}
Run Code Online (Sandbox Code Playgroud)

我可以使用utf8_encode,它将允许使用json_decode对字符串进行解码,但是该字符会被破坏成其他内容.这是结果数组的print_r的结果.两个字符.

[Tag] => Odómetro
Run Code Online (Sandbox Code Playgroud)

当我再次对数组进行编码时,我将字符转义为ascii,根据json规范这是正确的:

"Tag"=>"Od\u00f3metro"
Run Code Online (Sandbox Code Playgroud)

有什么方法可以解除这个吗?json_encode没有给出这样的选项,utf8_encode似乎也没有用.

编辑我看到json_encode有一个unescaped_unicode选项.然而,它没有按预期工作.哦该死的,它只在PHP 5.4上.我将不得不使用一些正则表达式,因为我只有5.3.

$json = json_encode($array, JSON_UNESCAPED_UNICODE);
Warning: json_encode() expects parameter 2 to be long, string ...
Run Code Online (Sandbox Code Playgroud)

php unicode json character-encoding

36
推荐指数
5
解决办法
12万
查看次数

参考:为什么我的"特殊"Unicode字符使用json_encode编码怪异?

当使用"特殊"Unicode字符时,它们在编码为JSON时会变成奇怪的垃圾:

php > echo json_encode(['foo' => '?']);
{"foo":"\u99ac"}
Run Code Online (Sandbox Code Playgroud)

为什么?我的编码错了吗?

(这是一个一劳永逸地澄清这个话题的参考问题,因为这一次又出现了.)

php unicode json utf-8

9
推荐指数
1
解决办法
2203
查看次数

标签 统计

json ×2

php ×2

unicode ×2

character-encoding ×1

utf-8 ×1