【问题标题】:MySQL won't store "€"MySQL 不会存储“€”
【发布时间】:2017-02-15 12:01:40
【问题描述】:

我正在开发一个需要存储/显示包含许多特殊字符的数据的应用程序。我已经设置了数据库排序规则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);

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

【问题讨论】:

  • 你试过用ISO-8859-1代替UTF-8吗?
  • 你读过this的帖子吗?它建议更改编码类型
  • 您的数据是否通过 URL 传输?这些数据是如何获得的?你试过在屏幕上输出吗?
  • @itsols 我正在从 csv 获取数据。在发送到数据库之前,我已经在浏览器中输出了数据,它运行良好但没有像数据库中那样存储
  • 通过MySQL命令行插入是不是也不起作用?

标签: php mysql laravel-5 special-characters


【解决方案1】:

尝试在 mysql 中将排序规则设置为“utf8_general_ci”

【讨论】:

  • 您的 php 文件中的编码是否仍然存在?
  • 你可以试试不带php编码的取出来插入
  • 没有 php 编码,它将这个符号转换为引号
【解决方案2】:

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

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

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

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

utf8_encode("test");

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

【讨论】:

    【解决方案3】:

    为了能够在查询中使用 UTF8 字符,您必须运行特定的查询设置,就像这样:

    $db->query("SET NAMES UTF8");
    

    但我看到你说你正在使用 Laravel。我一直没有研究它,但我猜这是由 config 中编写的charset 参数自动设置的,就像在这个问题的屏幕截图中一样: Laravel UTF-8 To Database

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2015-03-16
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多