发布PHP时的字符集问题+;MySQL网站

发布PHP时的字符集问题+;MySQL网站,php,mysql,iis,character-encoding,Php,Mysql,Iis,Character Encoding,我已经把我的网站发布到服务器上了,但是由于角色问题,我正在把头发扯下来。在本地,尽管我的操作很简单(不清楚或不匹配的字符集),但一切都很好。我们仅以一个表为例,因为它满足我们的条件: 我的本地场景 PHP5.3.0 Apache 2.2.11 MySQL 5.1.36-community-log 连接:utf8\u常规\u ci 数据库:latin1\u general\u ci 表:拉丁语1\u通用\u ci 谷歌浏览器。12.0.742.100 w/字符集ISO-8859-1 php页

我已经把我的网站发布到服务器上了,但是由于角色问题,我正在把头发扯下来。在本地,尽管我的操作很简单(不清楚或不匹配的字符集),但一切都很好。我们仅以一个表为例,因为它满足我们的条件:

我的本地场景

  • PHP5.3.0
  • Apache 2.2.11
  • MySQL 5.1.36-community-log
    • 连接:utf8\u常规\u ci
    • 数据库:latin1\u general\u ci
    • 表:拉丁语1\u通用\u ci
  • 谷歌浏览器。12.0.742.100 w/字符集ISO-8859-1
  • php页面字符集设置为:
  • 本地:注意“Matéria”(来自html)和“Notícia”(来自数据库)这两个词都正确地显示了重音:

我的主机场景

  • PHP 5.3.6
  • 运行FastCGI的IIS
  • MYSQL 5.5.13
    • 连接:utf8\u常规\u ci
    • 数据库:latin1\u general\u ci
    • 表:拉丁语1\u通用\u ci
  • 谷歌浏览器。12.0.742.100 w/字符集ISO-8859-1
  • php页面字符集设置为:
  • 主持人:请注意“诺蒂西亚”如何难以展现自己:

我读过一些东西,包括这篇为开发人员建立共同基础的文章

我考虑过

  • 问题在于表中的实际数据(尽管它具有拉丁1_general_ci排序规则,但数据实际上以不同的方式存储)
  • 与IIS有某种联系的问题(当一个人在IIS下运行PHP时,往往会责怪IIS)
  • 我不准确的编程技巧又一次捉弄了我
有人提供帮助吗?我可以提供一些巴西葡萄牙语的课程,一些关于精神生活的建议,或者只是聊聊天,但我必须解决这个问题,你们也许可以帮助我


提前感谢,

我将本地FedoraLinux机器上的mysql从5.1升级到5.5,并且我的字符集出现了问题。我发现仅仅安装软件并不能完成升级。升级后,我不得不按照程序来解决一些问题。该文件有许多步骤可以很好地解决这个问题。虽然你不应该直接跳到它-运行mysql\u升级是一个很大的帮助。

如果你使用ISO字符集,那么你必须确保你的文本存储的字符集与要显示的字符集相同

这就是你的问题所在

问题是,你的名字保存了什么字符集?这不受数据库设置的影响。与一般观点相反,数据库仅使用字符集进行排序。但它只是按原样保存位序列

将网站加载到浏览器中,然后强制浏览器使用ISO-1并查看其显示是否正确。如果是,则存储为ISO-1,如果不是其他内容

问题是:


  • 有了一个正确的位置,数据是从MySQL来的吗?你是如何转移数据库的?mySQL只提供了“Gazeta”、“tribuna”和“Notícia Agora”按钮。对于传输,我已经导出了表结构和数据,复制了SQL语句并在主机数据库中执行它们,所有这些都使用phpMyAdmin。我不建议在排序/编码时使用UTF8以外的任何东西。将utf8\u general\u ci设置为数据库,并确保所有表/列具有相同的排序规则。在html头标记中使用UTF8。您已经列出了您的连接、html和db有不同的编码。它似乎可以在你的机器上运行,但不能保证它会飞到其他任何地方。我可以这样做,但为什么不了解它为什么在本地运行而不是在线运行呢?更改为utf-8并不是我们的最佳选择,因为这意味着要更改大量代码和数据库本身,所以还有其他想法吗?但无论如何,谢谢你的建议,我肯定会阅读更多关于字符集的内容,以理解为什么我现在应该前往UTF-8。我忘了添加(从php页面)插入包含重音字符的项会引发错误,并且不会完成操作。Raffael。。。结果表明,数据库数据存储为UTF-8,因此我必须遍历每个.php文件,并将其编码更改为UTF-8,然后将文件重新保存为UTF-8(使用BOM,这在技术上对UTF-8没有影响,只是声明为UTF-8)。我们宁愿更改php文件,也不愿更改数据库数据本身,这将是一种痛苦(可能是错误的)。干杯。不管怎样,一直按UTF8键,你不会有任何问题。。。即使是PHP5.2也不行