php - 西类牙字符编码不正确

标签 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 声明为字符集。

例如,当我通过网络表单提交包含波浪号字符的员工姓名时,它在我的表格中显示为“Marie Cañ±on”,并且在我查看员工记录时在我的网页上显示为相同。

如果我将网页编码更改为 utf-8,它会正确显示为“Marie Cañon”。所以,我假设我以某种方式在我的 latin1 表中编码 UTF-8。但我很困惑这可能发生在哪里。

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

这可能发生在哪里?

附加信息: Ubuntu 10.04.2 长期支持版 MySQL 5.1.41-3ubuntu12.9-日志 PHP5:5.3.2 Apache 2:2.2.14

最佳答案

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

关于php - 西类牙字符编码不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036851/

相关文章:

mysql - 使用 SQL 查询以 CSV 格式导出 WordPress 帖子和元信息

php - 如何在 Codeigniter 中为忘记密码生成随 secret 码

PHP Prepared Statement vs mysqli_real_escape_string

javascript - 只有手机safari打不开页面,没有网络消息

mysql - 查找mysql中的行数

mysql - 使用正确数据类型的性能优势

java - 平台默认字符编码如何影响跨平台性能

python - utf16 与 utf-16

javascript - 在 Node.JS 中加载 EUC-JP 和其他日语文本编码

php - 通过 csv 文件更新 MySQL 中的表