西班牙字符无法正确编码

时间:2011-02-18 01:46:35

标签: php mysql character-encoding pdo

我正在菲律宾开展一个项目,许多人的名字中都有特殊的拉丁文字符。

我在latin1中设置了一个包含latin1_swedish_ci排序规则的所有表的数据库。

+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database   | latin1                         |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | latin1                         |
| character_set_system     | utf8                           |
| character_sets_dir       | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+

我的网页标题声明iso-8859-1为字符集。

例如,当我通过我的网络表单提交包含代字符的员工姓名时,它在我的表格中显示为“MarieCañon”,当我查看员工的记录时,我的网页上显示的内容相同。

如果我将网页编码更改为utf-8,则会正确显示为“MarieCañon”。所以,我假设我在我的latin1表格中编码UTF-8。但我很困惑可能发生的地方。

据我所知,PDO不涉及编码。我的网页被声明为iso-8859-1,所以我认为PHP不会导致问题。我的character_set_connection是MySQL中的latin1。

这可能发生在哪里?

其他信息: Ubuntu 10.04.2 LTS MySQL 5.1.41-3ubuntu12.9-log PHP5:5.3.2 Apache2:2.2.14

2 个答案:

答案 0 :(得分:6)

  1. 将您的MySQL切换为utf-8。
  2. 安装 mbstring PHP扩展并进行配置。
  3. 制作PHP标题:header('Content-type: text/html; charset=UTF-8');
  4. HTMLheaders <meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
  5. 检查此cheat sheet

答案 1 :(得分:4)

这对我有用:

$ title = mb_convert_encoding($ article ['title'],“UTF-8”,“iso-8859-1”);

西班牙语口音