这真让我疯狂。我正在建立一个西班牙语网站(意思是很多拉丁字符),我正在使用Zend框架。
当我保存á
时,它显示为á
。我知道是一个字符集编码,但我不明白为什么。
我的头像是<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
我的数据库是utf8_general_ci
。我已经将charset更改为其他人并且始终存在同样的问题。
当我查看我的数据库时,保存的是á
知道为什么会这样吗?谢谢!
答案 0 :(得分:1)
这里有摆脱编码问题的方法:
utf8_unicode_ci
。meta
代码:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
如果您有权访问MySQL文件配置my.cnf
,只需添加以下行:
init-connect='SET NAMES utf8'
这告诉MySQL为每个连接返回UTF-8的结果。
如果您无法编辑my.cnf
但正在使用PDO,请以这种方式打开连接:
$pdo = new PDO($dsn, $usr, $pwd, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
如果您没有使用PDO ... 启动使用它,您还在等什么?同时,如果使用ext / MySQLi:
,则可以在每次连接后执行此操作$mysql->set_charset('utf8');
或者如果您使用普通的旧版/ MySQL:
mysql_set_charset('utf8', $connection);
答案 1 :(得分:0)
可以使用á
映射ASCII地图外的字符unicode
和其他字符。
当你在UTF-8
字符集的表格中搜索数据时,字符存储正确。
我建议你
运行查询SET NAMES UTF-8
。这将获取您的UTF-8
数据,并处理ASCII地图之外的字符。
输出数据时,请确保强制/指示浏览器使用UTF-8
字符集打印数据。