我有一个简单的Quill.js
文本编辑器,它使用utf8_unicode_ci
归类将文本保存在“ mediumtext”类型的列中。 MySQL
服务器还使用utf8_unicode_ci
作为默认字符集,数据库以及laravel
项目的所有表和列也都使用utf8_unicode_ci
。
我在编辑器中输入以下葡萄牙语单词:Atenção
然后使用JS
将编辑器的内容设置为隐藏的输入:
var name = document.querySelector('input[name=text]'); // set text input var
name.value = quill.root.innerHTML; // populate textinput with quill data
此后,我在控制器功能上使用普通的DOM方法将内容保存到database
中,该功能接收到请求:
$detail = $request->input('text');
$dom = new \DOMDocument();
$dom->loadHTML($detail, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$detail = $dom->saveHTML();
$document->text = $detail;
这会将以下记录保存在表中:
<p>Atenção</p>
使用
{!! $doc->text; !!}
显示:
Atenção
代替正确的单词
Atenção
我的config/database.php
文件还具有:
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
在MySQL
设置上。
我还尝试将AddDefaultCharset UTF-8
行添加到.htaccess
文件中。
我在所有<meta charset="UTF-8">
项目页面的页头使用laravel
。
我使用Microsoft Visual Studio代码,该代码也默认设置了UTF-8
。
重要的是要知道,只有在这种情况下,我才有此问题,所有其他类型的数据都带有特殊字符,甚至单词Atenção
(存储为string
/ varchar
字段)在前端刀片视图中显示时效果很好。