首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Debian稳定版php-5.4上的Symfony2 JsonResponse utf8编码问题

Debian稳定版php-5.4上的Symfony2 JsonResponse utf8编码问题
EN

Stack Overflow用户
提问于 2015-03-25 19:28:24
回答 2查看 8.3K关注 0票数 10

在返回UTF8字符时,我在Debian的稳定php5 (5.4.39-0+deb7u1)上遇到了JsonResponse的问题。

我在Debian Testing php5 (5.6.6+dfsg-2)上开发了一个应用程序,下面的代码非常棒:

代码语言:javascript
复制
$response = new JsonResponse();
$response->headers->set('Content-Type', 'application/json');
$response->setData($data);
return $response;

但是在部署到稳定的prod服务器后,我开始得到完全相同的DB/Data字符集等的异常:

代码语言:javascript
复制
request.CRITICAL: Uncaught PHP Exception InvalidArgumentException: "Malformed UTF-8 characters, 
possibly incorrectly encoded." at /site/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/JsonResponse.php
 line 123 {"exception":"[object] (InvalidArgumentException(code: 0): 
Malformed UTF-8 characters, possibly incorrectly encoded. at 
/site/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/JsonResponse.php:123)"} []

作为$data DO传递的来自DB的响应包含我无法控制的UTF8字符。我只需要把它们展示出来。

我想我遇到了5.4的bug,但是我怎么才能轻松地绕过它呢?我试过了:

代码语言:javascript
复制
    $response = new JsonResponse();
    $response->headers->set('Content-Type', 'application/json');
    $response->setEncodingOptions(JSON_UNESCAPED_UNICODE);
    $response->setData($data);
    return $response;

但是我得到了同样的错误。

想法?

EN

回答 2

Stack Overflow用户

发布于 2015-03-25 20:01:46

在讨论了#symfony频道之后,我找到了一个变通方法:

代码语言:javascript
复制
    $response = new Response(json_encode($data, JSON_UNESCAPED_UNICODE));
    $response->headers->set('Content-Type', 'application/json');
    return $response;

其他不错的解决方案也很受欢迎。我认为这个解决方案是一个肮脏的黑客..。

票数 10
EN

Stack Overflow用户

发布于 2015-03-26 01:00:16

我认为你没有得到一个有效的UTF-8字符串。尝试找出为什么会有无效的utf8字节块(http://en.wikipedia.org/wiki/UTF-8#Invalid_byte_sequences)。

您可以使用unpackhttps://stackoverflow.com/a/11466734/4469738来分析字节

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29254396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档