【发布时间】:2020-01-03 19:09:35
【问题描述】:
我对服务器进行了 post 查询并获得了 json。它包含错误的符号:而不是“正确”,我得到了“\u0421orrect”。如何编码此文本?
一个 parse_json 函数像“РЎorrect”一样执行它;
我发现了
$a = "\x{0421}orrect";
$a= encode("utf-8", $a);
返回“РЎorrect”,并且
$a = "\x{0421}orrect";
$a= encode("cp1251", $a);
返回“正确”
所以我决定将 \u 更改为 \x,然后使用 cp1251。
\u to \x
我写道:
Encode::Escape::enmode 'unicode-escape', 'perl';
Encode::Escape::demode 'unicode-escape', 'python';
$content= encode 'unicode-escape', decode 'unicode-escape', $content;
得到了\x{0421}正确的。
然后我尝试了:
$content = encode( 'cp1251', $content );
而且……没有任何改变!我还有\x{0421}更正...
我注意到一些有趣的事情:
$a = "\x{0421}orrect";
$a= encode("cp1251", $a);
返回“正确”
但是
$a = '\x{0421}orrect';
$a= encode("cp1251", $a);
仍然返回“\x{0421}orrect”。
也许这是一把钥匙,但我不知道我能用它做什么。
我已经尝试过编码和解码,Encode::from_to,JSON::XS 和 utf8。
【问题讨论】:
-
"got json": Content-Type 响应头值是什么?
-
@mob 我看过这个页面,但它并没有帮助我让我的代码工作)
-
@TomBlodget
'application/json; charset=utf-8' -
您似乎对调试输出感到困惑。原始响应处理工作或可以像@ikegami 的答案一样工作