1

这真的让我发疯。我正在建立一个西班牙语网站(意味着很多拉丁字符)并且我正在使用 Zend 框架。

当我保存它时á,它显示为á. 我知道是字符集编码,但我不明白为什么。

我的头字符集是<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 我的数据库是utf8_general_ci. 我已经将字符集更改为其他字符集,并且总是出现同样的问题。

当我查看我的数据库时,保存的是一个á

知道为什么会这样吗?谢谢!

4

2 回答 2

1

这是摆脱编码头痛的秘诀:

  1. 您的数据库、表和字段必须使用 collat​​ion utf8_unicode_ci
  2. 确保您的代码(HTML、PHP... all)是 UTF-8 编码的。
  3. 始终使用此meta标签:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. 这很长:

如果您有权访问 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');

或者,如果您使用普通的旧 ext/MySQL:

mysql_set_charset('utf8', $connection);
于 2012-11-08T14:44:05.080 回答
0

áASCII 映射之外的字符和其他字符可以用unicode.

当您使用UTF-8字符集和字符正确存储表中的数据时。

我建议你

  • 存储数据之前
  • 在您获取数据之前

运行查询SET NAMES UTF-8。这将UTF-8通过处理 ASCII 映射之外的字符来获取您的数据。

在输出数据时,请确保您正在强制/指导浏览器使用UTF-8字符集来打印数据。

于 2012-11-08T14:31:26.640 回答