我正在保存一些字符串到数据库(mysql),但laravel总是保存这个,例如"Dru"而不是"Društvo"。我该如何解决这个问题?它的裁剪字符串位于带caron的字符处。如果我手动保存字符串,然后取回它laravel会正确显示它但如果我在视图文件中写入相同的字符串,我只会得到。有解决方案吗?
- 确保数据库字符集/联盟为
UTF-8
。 - 在您插入这些俄罗斯字符的页面(表单,文本区),确保编码是
UTF-8
,通过设置Content-Type为text/html;
charset=utf-8.
在俄罗斯文本直接输入到表单。 - 在处理此表单的处理页面上,将其插入到数据库中,确保执行
SET NAMES
utf8
,以便在插入数据之前将其存储为UTF-8 ,在单独的查询中。- 当你在视图中呈现数据库中的内容时,确保content - type是
text/html; charset=utf-8
。 - 当你在视图中呈现数据库中的内容时,确保content - type是
确保内容类型为而不是 windows-1251或iso-8859-1/latin1。请确保数据库字符集/合并不是ISO-8859-1/Latin1。
mysql存储字符的第二种方式:
连接到数据库后尝试调用mysql_set_charset('utf8');
。我认为这与执行SET NAMES
查询类似,但由于PHP手册说建议在SET NAMES
查询上使用该函数,所以我尝试一下。
最后,同样,当你显示你的内容时,你可以尝试。同样,当你显示你的内容时,你可以尝试echo htmlentities($string, ENT_COMPAT, 'UTF-8');
我在laravel有同样的问题,但我想出了这个方法。
写在你的app/config/database.php
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
在mysql数组中。
如果已经存在,请确保将表列设置为utf8_unicode_ci。
Thank you