我正在使用laravel 5.2,这是我的数据库配置设置:
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
我也尝试将'utf8_unicode_ci'
用作排序规则,但它也无法正常工作。
用例:这是我要插入的文本:
$ str =“ 9月9日发布”
但这正在存储:
Après 9 mois passés dans le
答案 0 :(得分:1)
您看到的是将文本替换为HTML entities,这通常是文本直接来自HTML来源的结果(先前已转换为htmlentities
的文本形式或其他来源)。
这里的理想解决方案是确保不会以HTML实体编码方式接收文本,但是,如果这不是一种选择(通常不是这样),则可以使用:
$decoded = html_entity_decode($text);
在插入实体之前将其解码为实际字符。
一些琐事:
只要正确发送Unicode文本,您实际上不需要将所有字符编码为它们对应的实体即可在HTML上显示。这就是为什么PHP具有2个不同的功能htmlspecialchars
和htmlentities
的原因,其中第一个功能仅编码为不破坏HTML而必须编码的内容(手册中<,>和&列出的5个字符,“和”),而第二个则基于链接表对所有内容进行编码。
答案 1 :(得分:0)
在您的Database.php
中插入:
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
这应该允许您以所需的格式保存字符串。
并且请确保您的MySQL设置为utf8