MySql西班牙语字符数据

时间:2011-08-22 16:37:13

标签: php mysql character-encoding

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

3 个答案:

答案 0 :(得分:6)

将您的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以获取更多信息,并查看用于批量更改数据库中每个表/列的脚本。

答案 1 :(得分:0)

首先检查两件事:

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

答案 2 :(得分:0)

我在与您相同的问题上浪费了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

这是一个很棒的技巧,效果很好。

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