【发布时间】:2013-06-03 11:42:37
【问题描述】:
我正在向我的 PHP Web 服务发送一个 JSON POST 正文,如下所示:
{
"foo": "☺"
}
当我在 PHP 中回显正文时,我看到:
{
"foo":"\xe2\x98\xba"
}
我也尝试发送 \uXXXX 等效项:
{
"foo": "\u263a"
}
这更进一步,因为收到的原始 JSON 字符串有 "foo":"\\u263a",但在 json_decode 之后,值变成了 \xe2\x98\xba。
当我在 JSON 响应中使用该值时,这会导致问题。我明白了:
json_encode(): Invalid UTF-8 sequence in argument
简单来说,这就是我尝试对字符串进行 JSON 编码的原因:
> php -r 'echo json_encode("\x98\xba\xe2");'
PHP Warning: json_encode(): Invalid UTF-8 sequence in argument in Command line code on line 1
我的问题是:我怎样才能最好地将这个笑脸从我的应用程序的一端传递到另一端?
如果您能提供任何帮助,我将不胜感激。
【问题讨论】:
-
你是如何“[...] 回响身体 [...]”的?
-
echo "\xe2\x98\xba";工作;显示正确的 unicode 笑脸。 -
@PleaseStand 我用
error_log(file_get_contents('php://input'))将它发送到error_log。 -
@rossmcf 你能发布引发错误的行吗?
-
您需要了解 Unicode 字符与其 UTF-8 编码之间的关系。您所展示的一切都是正确的,但上下文很重要。