Php Laravel的Utf8编码问题

Php Laravel的Utf8编码问题,php,laravel,encoding,Php,Laravel,Encoding,在部署我的laravel网站(在本地正常工作)后,我遇到了一个问题。 有些文本编码不正确, 例如:应该是Joël的是Joël 一些信息: 并非所有视图都受到影响,一些变量在一个视图中正确呈现,在另一个视图中被破坏(这让我认为这不是mysql的问题) 我的json响应不再工作(格式错误的UTF-8字符,可能编码不正确),这使我认为这一定是mysql的问题…) 我已经尝试将其放入我的AppServiceProvider\Blade::setEchoFormat('e(utf8_encode(%s)

在部署我的laravel网站(在本地正常工作)后,我遇到了一个问题。 有些文本编码不正确, 例如:应该是Joël的是Joël

一些信息:

  • 并非所有视图都受到影响,一些变量在一个视图中正确呈现,在另一个视图中被破坏(这让我认为这不是mysql的问题)

  • 我的json响应不再工作(格式错误的UTF-8字符,可能编码不正确),这使我认为这一定是mysql的问题…)

  • 我已经尝试将其放入我的AppServiceProvider
    \Blade::setEchoFormat('e(utf8_encode(%s)))

  • 我的strftime也不起作用,但它可以通过php的utf8_encode函数解决,该函数不适用于我的其他变量。 例如,如果$c->name给Joël,utf8_encode($c->name)也给Joël

  • 在config/database.php中,字符集设置为utf8mb4,collation设置为utf8mb4\u unicode\u ci


你有什么办法解决我的问题吗

只需在服务提供程序AppServiceProvider中执行此操作,并将其放入引导方法中即可

Blade::setEchoFormat('e(utf8_encode(%s))');
通常,坚持UTF-8可以让生活变得简单

从其他任何地方复制和粘贴到代码中都要格外小心——基本上,在复制和粘贴到代码中之前,一定要通过Notepad++并使用其转换为UTF-8(无BOM)

然后确保所有视图(包括错误页面)都


如果您正在使用HTML4,请执行以下操作

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

希望这能帮助您

我找到了一个解决方案:

我用

{!! htmlentities($variable, ENT_QUOTES, "UTF-8") !!}
但这并不方便

我试过:

Blade::setEchoFormat('e(htmlentities(%s,ENT_QUOTES,'UTF-8'))');
在AppServiceProvider中,但它不能解决问题


所以这是一个暂时的解决方案

格式错误的文本是仅来自数据库还是也来自原始字符串?(例如:翻译文件)是的,它只来自数据库,但如果我在命令行中从终端发出请求(我选择了select*from…),文本编码很好,我只是注意到我的flash消息格式也不正确,我想如果我使用“file namefile.php”,肯定不是数据库问题在我看来,我得到了:UTF-8 Unicode文本你应该得到UTF-8或US-ASCII。(
encguess
将为您提供更好的编码结果)
Blade::setEchoFormat('e(htmlentities(%s,ENT_QUOTES,'UTF-8'))');