Laravel / Quill.js特殊字符在UTF-8中无法正确显示

时间:2019-10-02 04:08:04

标签: mysql laravel utf-8 character-encoding quill

我有一个简单的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&Atilde;&sect;&Atilde;&pound;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字段)在前端刀片视图中显示时效果很好。

0 个答案:

没有答案