MySQL不会存储"€"

时间:2017-02-15 12:01:40

标签: php mysql laravel-5 special-characters

我正在开发一个应用程序,我需要存储/显示包含许多特殊字符的数据。我已设置数据库排序规则utf8。我已将表utf8和字符集的排序规则设置为utf8_unicode_ci。它存储了éâ等所有特殊字符。但是,每当角色出现时,它就不会被存储。就像有“attributedâ€字时,它变为âattributedâ。我目前正在使用Laravel 5.2(PHP)。

到目前为止我尝试了什么 我在我的代码中设置了以下内容

  iconv_set_encoding('internal_encoding', 'UTF-8');
  mb_internal_encoding('UTF-8');

我也试过

$value = array_map("utf8_encode", $array);

但是这个特殊字符并没有按原样存储。是否有人让我知道我应该怎么做才能保存这个特殊字符。

3 个答案:

答案 0 :(得分:0)

尝试将整理设置为" utf8_general_ci"在你的mysql中

答案 1 :(得分:0)

通常将符号存储到数据库字段没有问题。检查所有脚本是否都处于正确的编码状态。

将您的表格和该表格中的所有数据设置为utf8_general_ci,然后尝试将您的php文件更改为UTF-8。

header('Content-Type: text/html; charset=utf-8');

如果您的数据不正确,请使用。

utf8_encode("test");

将您的字符串编码为正确的UTF-8字符串。如果这不起作用,我认为您尝试转换的数据或字符串不正确。

答案 2 :(得分:0)

为了能够在查询中使用UTF8字符,您必须运行某个查询设置,如下所示:

php_flag opcache.enable Off

但我看到你说你正在使用Laravel。我没有一直在努力,但我想这是由config中编写的$db->query("SET NAMES UTF8"); 参数自动设置的,就像在这个问题的屏幕截图中一样: Laravel UTF-8 To Database