Laravel 5 字符集无法在视图上正常工作。但是当我从控制器中转储它时它运行良好

Laravel 5 charset not working correctly on the views. But it working well when I dump it from controller

我遇到了字符集问题。我正在开发一个使用 sql 服务器数据库的应用程序。数据库不是为此应用程序创建的,它存在于它之前并且运行良好。我无法更改数据库中的任何内容,因为它太大并且被许多其他应用程序使用。
我已经完成了我的 laravel 5 应用程序的授权,因此我将创建一个视图并在该视图中显示已登录用户的名称。名称是:ADMINISTRADOR DA ACENTUAÇãO。它使用了一些特殊字符。
在我看来:

{!!Auth::user()->name!!} 

它显示:

ADMINISTRADOR DA ACENTUA��O

但是在我的控制器中,在 return 视图之前,我做了:

die(\Auth::user()->name);

它告诉我:

ADMINISTRADOR DA ACENTUAÇÃO

我现在尝试在我的视图文件中执行此操作:

    {!!Auth::user()->name!!}
<?php die();

这很好用。它告诉我:

ADMINISTRADOR DA ACENTUAÇÃO

这让我相信错误发生在 laravel 解析视图后。

我不知道为什么当我在控制器上删除用户名时效果很好,但当我在视图上回显它的名字时却不起作用。

有人能帮我吗?

PS:

由于成功和错误响应的行为不一致,差异可能在于 HTTP headers。如果是这种情况,发生的情况是 Sqlserver 和您的浏览器使用相同的编码,可能是一些 Windows 默认值,例如 cp1252,而 Laravel 配置为使用与数据库。

在调用视图和死时检查 HTTP header content-type - 如果这是你的问题,请配置 Laravel 发送一些 header与您的模板和数据库编码一致(或者当然!在需要时明确转码)

通常坚持使用 UTF-8 可以让生活变得简单。

从其他任何地方复制粘贴到您的代码中时要格外小心 - 基本上总是先通过 Notepad++ 并使用其转换为 UTF-8(无 BOM),然后再复制并粘贴到您的代码中。

第一个问题 - 数据如何进入您的数据库?

超级顶级提示 如果您使用的是表单,请确保您已在表单元素上设置了接受的字符集属性:

<form accept-charset="UTF-8"

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

<meta charset="UTF-8">

或者如果您正在执行以下操作 HTML4

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

我使用 解决了这个问题。我刚刚进入我的 AppServiceProvider 并进入引导方法:

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

我不知道这是否是正确的方法,但它对我有用。

我不小心在不同的文本编辑器中打开了我的 UTF-8 编码文件并保存了。但是,它自动将我的 UTF-8 文件保存为 ANSII。所以我必须再次打开文件并将文件保存为 UTF-8 编码。