首页 文章

Laravel 的 Utf8 编码问题

提问于
浏览
1

部署我的 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 中,charset 设置为 utf8mb4,并且 collaction 设置为 utf8mb4_unicode_ci

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

2 回答

  • 0

    只需在服务提供者 AppServiceProvider 中执行此操作并将其置于引导方法中

    Blade::setEchoFormat('e(utf8_encode(%s))');
    

    一般坚持 UTF-8 让生活变得简单。

    从其他任何地方复制和粘贴代码都非常小心 - 在复制和粘贴到代码之前,基本上总是通过记事本并使用其转换为 UTF-8(无 BOM)。

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

    <meta charset="UTF-8">
    

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

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

    希望对你有帮助

  • 0

    我找到了解决方案:

    我用

    {!! htmlentities($variable, ENT_QUOTES, "UTF-8") !!}
    

    但这不方便......

    我试过了 :

    Blade::setEchoFormat('e(htmlentities(%s,ENT_QUOTES,'UTF-8'))');
    

    在 AppServiceProvider 中但它没有解决问题。

    所以这是一个临时解决方案......

相关问题