【问题标题】:Invalid UTF-8 sequence in argument with LaravelLaravel 参数中的 UTF-8 序列无效
【发布时间】: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


【解决方案1】:

我有setLocale('fr_FR'),现在我有setLocale('fr_FR.UTF8'),它解决了问题!

Laravel 不再对任何 AJAX 请求使用 json_encode() 抛出任何错误。我的 strftime 函数为每个带重音的字母返回正确的字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2015-07-04
    • 2012-03-25
    相关资源
    最近更新 更多