laravel5在数据库中不存储特殊字符

z9smfwbn  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(323)

我使用的是laravel 5.2,以下是我的数据库配置设置:

'charset' => 'utf8',
'collation' => 'utf8_general_ci',

我也试过了 'utf8_unicode_ci' 但它也不起作用。
用例:这是我试图插入的文本:
$str=“四月ès 9莫伊斯通行证é“是的,是的”
但这是存储:

Après 9 mois passés dans le
col17t5w

col17t5w1#

您看到的是文本被替换为html实体这通常是直接来自html源的文本的结果(或者是带有先前转换为的文本的表单) htmlentities 或其他来源)。
这里的理想解决方案是确保文本不会以html实体编码的形式接收,但是如果这不是一个选项(通常不是),则可以使用:

$decoded = html_entity_decode($text);

在插入实体之前将其解码为实际字符。
一些琐事:
实际上,只要您正确地发送unicode文本,就不需要将所有字符编码到它们相应的实体,以便在html上显示。这就是为什么php有两个不同的函数 htmlspecialchars 以及 htmlentities 其中第一个函数只编码为了不破坏html(手册中列出的5个字符,<,>,&,“and”),而第二个函数基于链接表对所有内容进行编码。

kcrjzv8t

kcrjzv8t2#

在你的 Database.php 插入:

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',

这将允许您以所需的格式保存字符串。
请确保您的mysql设置为 utf8

相关问题