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