【问题标题】:How to remove  character如何删除Â字符
【发布时间】:2010-01-28 08:47:22
【问题描述】:

我遇到了一个很奇怪的问题。我有一个在两台服务器上运行的 php 网站。一个是在 Apache (Linux) 上,第二个是在 IIS (WIdow) 上。 Linux Server,我只是为了演示而运行它。 IIS 是我需要托管的实际托管。即使在 linux 服务器中使用所有相同的代码、数据库,也没有 Â 字符。但是在 IIS 中,到处都有 Â 字符。我检查了所有元标记,它是 utf-8。在数据库中,排序规则也是 utf-8。在 mysql 数据库中,我得到了那些 Â 字符,但不知何故,在 linux 中,当我们从数据库中获取内容时,那些 Â 不显示。它只是发生在 IIS 上。谁能指出我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: php mysql character-encoding


    【解决方案1】:

    前段时间我遇到了类似的问题,这里有一些有用的 cmets 和信息 - 它是 PHP,但我相信理论是一样的:Question 386378

    【讨论】:

    • 似乎,我的问题很难理解。是的,我遇到的问题是当我在 IIS 服务器上浏览时,那些字符内容到处都显示。但是在 apache (linux) 服务器中,它没有显示任何内容。我写的所有代码和从数据库中获取的内容都是一样的。
    • 所以问题可能在于,虽然 Apache 正确地将内容作为 UTF-8 提供,但 IIS 将其作为其他东西提供服务——可能是 windows-1252。此答案中链接到的线程中对此进行了全面介绍。
    【解决方案2】:

    您还需要在 HTTP 标头中指定 UTF-8。使用 PHP:

    <?php
    header('Content-Type: text/plain; charset=utf-8');
    ?>
    

    使用 Apache:

    AddDefaultCharset UTF-8
    

    Apache 设置可以放在 .htaccess 文件中。

    【讨论】:

    • AddDefaultCharset UTF-8 不错!
    【解决方案3】:

    我检查了所有的元标记,它是 utf-8。

    浏览器不解释元标记。当没有 http-headers 存在时,这只是一个后备。右键单击并选择“查看页面信息”以查看浏览器实际上解释页面的编码。

    在数据库中,排序规则也是 utf-8。在mysql数据库中

    Collat​​ion 与字符的显示无关。 charset 很重要。连接字符集也是如此。

    【讨论】:

      【解决方案4】:

      尝试使用FiddlerFirebug 之类的方式直接检查html 响应。检查来自 IIS/Apache 的响应(应该返回完全相同的文本)是否有:

      • 不同的数据
      • 不同的标题

      特别注意 Content-Type 标头,它应该说明返回文本的字符编码(utf-8、ISO/IEC 8859-1、Latin-1 等)。

      【讨论】:

        猜你喜欢
        • 2015-10-30
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 2011-11-15
        相关资源
        最近更新 更多