我最近将一个项目从 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) }} 但我觉得可以做一些更通用的事情。
最佳答案
在此处阅读升级指南: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();
}
}
关于php - 使用 {{ }} 时的 Laravel 5.6 htmlspecialchars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722185/