Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5不在数据库中存储特殊字符_Php_Mysql_Database_Laravel_Utf 8 - Fatal编程技术网

Php Laravel 5不在数据库中存储特殊字符

Php Laravel 5不在数据库中存储特殊字符,php,mysql,database,laravel,utf-8,Php,Mysql,Database,Laravel,Utf 8,我使用的是laravel 5.2,以下是我的数据库配置设置: 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 我也尝试了'utf8\u unicode\u ci'作为排序规则,但它也不起作用 用例:这是我试图插入的文本: $str=“4月9日,我的人生道路” 但这是在存储: Après 9 mois passés dans le 在数据库.php中插入: 'charset'

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

'charset' => 'utf8',
'collation' => 'utf8_general_ci',
我也尝试了
'utf8\u unicode\u ci'
作为排序规则,但它也不起作用

用例:这是我试图插入的文本:

$str=“4月9日,我的人生道路”

但这是在存储:

Après 9 mois passés dans le

数据库.php中插入:

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',
这将允许您以所需格式保存字符串


并且请确保您的MySQL设置为
utf8

您看到的是被替换的文本,这通常是直接来自HTML源的文本的结果(包含先前转换为
htmlentities
的文本的表单或其他源)

这里的理想解决方案是确保文本不会以HTML实体编码的形式接收,但是如果这不是一个选项(通常不是),您可以使用:

 $decoded = html_entity_decode($text); 
在插入实体之前将其解码为实际字符

一些琐事:


实际上,只要正确发送Unicode文本,就不需要将所有字符编码到它们对应的实体中以显示在HTML上。这就是为什么PHP有两个不同的函数,其中第一个函数只编码不破坏HTML所需的编码(手册中列出的5个字符,&“and”)而第二个基于链接表对所有内容进行编码。

是一个类型问题。请检查您是否在任何地方对文本执行
htmlentities
,或者您是否没有从源代码处接收到它(我猜是表单?)我使用了
htmlentities
,但它仍然不起作用。请确保您没有执行
htmlentities
。还要对文本执行
dd(…)
,以查看它是否真的像那样被接收。如果它来自表单,则可能会在提交案例之前转换为html实体,您可以执行
html\u实体解码(…)
在插入ittry之前,在文本上转到表,对于每一列,将属性更改为“utf8mb4\u unicode\u ci”…如果这没有帮助,那么您的IDE中就有问题“html实体”不是MySQL处理的问题。