【问题标题】:MySql spanish character dataMySql 西班牙语字符数据
【发布时间】:2011-08-22 16:37:12
【问题描述】:

我有一个包含西班牙语字符的数据库。为了填充数据库,我从具有字符编码 = UTF-8 的客户端页面获取值。当我在 mySql 数据库中插入值时,行包含更改的数据。例如,如果我插入“México”,则数据库中的条目是“México”。这产生的影响是,当我对指定“México”的表进行查询时,我没有得到任何结果。我的问题是你如何在 mysql 数据库中插入西班牙语或其他拉丁口音?我已经尝试了所有的排序规则,htmlentities() 等,但没有任何效果! 在进行 mysql 查询时,我检查了正在发送的数据,并且它的格式正确为“墨西哥”,但是当我通过 phpmyadmin 看到表条目时,它被改变了!!

【问题讨论】:

标签: php mysql character-encoding


【解决方案1】:

将您的 mysql 数据库/表/列编码更改为 UTF-8(并将排序规则设置为兼容值)。

ALTER TABLE mytable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE mytable 
MODIFY country CHAR(50) 
CHARACTER SET utf8 COLLATE utf8_general_ci;

连接时还要指定PHP端的字符集。

mysql_set_charset('utf8',$conn); 

查看this article 了解更多信息以及批量更改数据库中每个表/列的脚本。

【讨论】:

  • Anthony 在数据库中插入项目后,我无法查询我的数据库...就像我提供的值和数据库中的值不匹配一样!!我也以这种形式发布这个问题...不知道发布链接
  • Salman,您在查询时是否也在 PHP 端设置了 utf8 编码? (第二个代码块)。您必须始终使用相同的编码(在本例中为 utf8)。如果您使用 utf8 插入并使用默认字符(可能是 ISO-8859-1)进行查询,则将无法正常工作。查看 PHP 手册中的 this page
  • 不工作 :/ 还有,你有 PHP 命令的 PDO 版本吗?
【解决方案2】:

我刚刚在和你一样的问题上浪费了 4 个小时。

一切都在 UTF-8 中

EG:

<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

MySQL 数据库是 UTF-8 PHP 是 UTF-8

四个小时后,我多次扯掉头发,我找到了一个有效的解决方案。

$content = htmlentities($row[mystring], ENT_QUOTES, "ISO-8859-1");
$content = html_entity_decode($content);

重音符号将它们转换为 html 字符,然后将它们转换回 UTF-8

这是一个很棒的 hack,而且效果很好。

由于某些莫名其妙的原因,我的 MYSQL 数据库中的数据不是 UTF-8 格式,即使我已经采取了极端措施,例如将数据导出到 phpmyadmin 中的文本文件,在文本编辑器中将其保存为 UTF-8并重新导入它。这些都不起作用。

【讨论】:

  • 在你写这篇文章三年半之后,我只想说你为我节省了几个小时的精力。这非常有效!
【解决方案3】:

先检查两件事:

  • 您是否以 UTF-8 格式插入数据?如果数据来自网页,请确保页面的编码设置为 UTF-8(编码元标记设置在页眉中)。
  • 您确定数据没有保存为 Unicode 吗?这是相反的情况:如果 phpMyAdmin 使用 UTF-8 以外的其他内容,则在显示内容时您会看到乱码。

【讨论】:

  • 如果页面编码错误,回显数据不一定能告诉您任何信息。
猜你喜欢
  • 2017-01-05
  • 2023-03-18
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2013-07-03
  • 1970-01-01
相关资源
最近更新 更多