我有一个包含西班牙语字符的数据库。填充数据库,我从客户端页面得到的值有字符编码=UTF-8。当我在mySql数据库中插入值时,行中包含更改的数据。例如,如果我插入' m
将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端的char集。
mysql_set_charset('utf8',$conn);
查看这篇文章,了解更多信息和批量更改数据库中每个表/列的脚本。
我刚刚在和你一样的问题上浪费了4个小时。
一切都是UTF-8
,
<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
这是一个伟大的黑客,它的工作完美。
由于某些莫名其妙的原因,我的MYSQL数据库中的数据不是UTF-8格式,即使我已经采取了极端的措施,如导出数据到phpmyadmin中的文本文件,将其保存为文本编辑器中的UTF-8并重新导入它。这些都不起作用。
先检查两件事:
- 您是否以UTF-8格式插入数据?如果数据来自网页,请确保页面的编码设置为UTF-8(编码元标签设置在页面头)。
- 您确定数据不保存为Unicode吗?这是相反的情况:如果phpMyAdmin使用UTF-8以外的其他东西,当它显示内容时,你会看到乱码。