【发布时间】:2014-09-02 15:22:46
【问题描述】:
我有一个关于编码字符集的问题,事实上,当我在本地测试我的网站时(MAMP PHP 5.5.3) 一切正常,我的 JSON 对象返回没有任何问题。 但是在使用由dreamhost(PHP 5.4)托管的服务器时,它不起作用并抛出这个错误
json_encode():参数中的 UTF-8 序列无效。
(这是Laravel 在文件JsonResponse.php 上使用setData 方法抛出的错误)。
那么,怎么可能在我的在线服务器上出现错误,而不是在我的本地服务器上呢?
编辑:
这是我的响应头:
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:1371
Content-Type:text/html; charset=UTF-8
Date:Thu, 02 Oct 2014 11:56:30 GMT
Expires:Thu, 02 Oct 2014 11:56:31 GMT
Keep-Alive:timeout=2, max=100
Server:Apache
Vary:Accept-Encoding,User-Agent
应该是:Content-Type:application/json; charset=utf-8?
但我不能覆盖标题.. 这不起作用:
$response->header('Content-Type', 'application/json');
$response->header('charset', 'utf-8');
【问题讨论】:
-
你想让我们猜测问题是什么吗?显示代码。
-
事实上,我唯一想知道的是为什么我的在线服务器上存在编码字符集问题,而我的本地服务器上却没有..
-
配置是否相同?一定有什么不同。
-
你能
var_dump()用::setData()编码什么吗? -
事实上我的对象内容是法语字符串,所以有一些重音。我可以通过在每个字符串值上应用 utf8_encode 的递归函数来解决问题,但它会转换一些字符,例如“é”变为“A©”。不知道为什么。而且我无法访问我的 Dreamhost 服务器上的 apache/php conf。
标签: php json laravel utf-8 mamp