【发布时间】:2011-06-17 19:05:11
【问题描述】:
我已将我的网站发布到服务器上,但由于性格问题,我正在扯掉我的头发。尽管我有任何愚蠢(不清楚或不匹配的字符集),但在本地它一切正常。我们只以一张表为例,因为它满足我们的条件:
我的本地场景
- PHP 5.3.0
- Apache 2.2.11
- MySQL 5.1.36-community-log
- 连接:utf8_general_ci
- 数据库:latin1_general_ci
- 表:latin1_general_ci
- google chrome browser v. 12.0.742.100 w/charset ISO-8859-1
- php 页面字符集设置为:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> - local:注意单词“Matéria” - 来自 html - 和“Notícia” - 来自数据库 - 两者都正确显示重音:
我的宿主场景
- PHP 5.3.6
- IIS 运行 FastCGI
- MYSQL 5.5.13
- 连接:utf8_general_ci
- 数据库:latin1_general_ci
- 表:latin1_general_ci
- google chrome browser v. 12.0.742.100 w/charset ISO-8859-1
- php页面字符集设置为:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> - 主持人:请注意“Notícia”如何出现问题:
我已经阅读了一些内容,包括这封 very good article 为开发人员建立共同点。
我考虑过:
- 问题在于表中的实际数据(尽管它具有 latin1_general_ci 排序规则,但数据实际上存储方式可能与 this mate states it 不同);
- 与 IIS 有一定关系的问题(当一个人在 IIS 下运行 PHP 时,往往会责怪 IIS);
- 我不正确的编程技巧又在欺骗我
有人提供帮助吗?我可以提供一些巴西葡萄牙语课程,一些关于精神生活的建议或只是聊聊任何事情,但我必须解决这个问题,你也许可以帮助我。
提前致谢,
【问题讨论】:
-
数据来自MySQL?您是如何转移数据库的?
-
只有“A Gazeta”、“A tribuna”和“Notícia Agora”按钮来自 mySQL。对于传输,我已经导出了表结构和数据,复制了 SQL 语句并在主机数据库中执行它们,所有这些都使用 phpMyAdmin。
-
我不建议您使用 UTF8 以外的任何东西进行排序/编码。将 utf8_general_ci 设置为您的数据库,并确保所有表/列具有相同的排序规则。在您的 html 头标签中使用 UTF8。您已经列出自己的连接、html 和 db 具有不同的编码。它似乎可以在您的机器上运行,但不能保证它会在其他任何地方飞行。
-
我可以做到这一点,但为什么不了解它为什么在本地工作而不是在线工作呢?更改为 utf-8 不是我们最好的选择,因为它意味着更改大量代码和数据库本身,所以还有其他想法吗?但无论如何感谢您的建议,我肯定会阅读更多关于字符集的内容,以了解为什么我现在应该使用 UTF-8。
-
我忘了添加 INSERTing(来自 php 页面)包含重音字符的项目会引发错误并且无法完成操作。
标签: php mysql iis character-encoding