我最近将一个项目从Laravel 5.5升级到5.6,并且我有一些编码字符(如')以前没有。如果我再次降级到Laravel 5.5,并且一切保持不变(只需降级几个软件包以使其兼容),字符将按预期显示。
我检查了文档,并在5.5和5.6中提到了{{}}和{!! !!}:https://laravel.com/docs/5.6/blade#displaying-data
数据库连接已且在升级之前已设置为使用utf8mb4作为字符集,并使用utf8mb4_unicode_ci作为排序规则。
您知道为什么在Laravel 5.6中会发生这种情况吗?一种(快速)解决方案是将{{}}替换为{!! !!}或{{html_entity_decode($ text,ENT_QUOTES)}},但我觉得可以做一些更一般的事情。
答案 0 :(得分:5)
在此处阅读升级指南:https://laravel.com/docs/5.6/upgrade
问题的答案在Blade > HTML Entity Encoding
中。
在您的app/Providers/AppServiceProvider.php
中,将此代码Blade::withoutDoubleEncoding();
添加到引导功能中。这是整个文件:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::withoutDoubleEncoding();
}
}