Laravel 的 utf8 编码问题

Pie*_*Ftn 5 php encoding laravel

我在部署 Laravel 网站(在本地正常工作)后遇到问题。\n某些文本编码不正确,\n例如:Jo\xc3\xabl 应该是 Jo\xc3\x83\xc2\xabl

\n\n

一些信息 :

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

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

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

  • \n
  • 我的 strftime 也不起作用,但可以使用 php 的 utf8_encode 函数解决,该函数不适用于我的其他变量。 \n例如,如果 $c->name 给出 Jo\xc3\x83\xc2\xabl ,则 utf8_encode($c ->name) 还给出 Jo\xc3\x83\xc2\xabl

  • \n
  • 在 config/database.php 中,字符集设置为 utf8mb4,集合设置为 utf8mb4_unicode_ci

  • \n
\n\n

您有什么想法可以解决我的问题吗?

\n

MD.*_*zan 2

只需在服务提供者 AppServiceProvider 中执行此操作并将其放入 boot 方法中

Blade::setEchoFormat('e(utf8_encode(%s))');
Run Code Online (Sandbox Code Playgroud)

一般来说,坚持使用 UTF-8 可以让生活变得简单。

从其他地方复制并粘贴到代码中时要非常小心 - 基本上总是通过 Notepad++ 并使用其转换为 UTF-8(不含 BOM),然后再复制并粘贴到代码中。

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

<meta charset="UTF-8">
Run Code Online (Sandbox Code Playgroud)

或者如果您使用的是 HTML4,请执行以下操作

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助