首页 文章

Apache的默认编码是ISO-8859-1,但网站是UTF-8?

提问于
浏览
0

我必须首次处理编码,我对PHP,Apache和浏览器如何处理编码感到困惑 . PHP和Apache默认使用ISO-8859-1,但大多数网站都是UTF-8 . 在什么时候ISO-8859-1转换成UTF-8?此外,由于PHP使用ISO-8859-1,它怎么能读取UTF-8网页?

1 回答

  • 1

    Apache默认不“使用”任何编码,其工作几乎与理解或转换文本编码无关 . PHP默认情况下不“使用”ISO-8859,PHP的字符串没有相关的编码 .

    真实的是,许多PHP的核心字符串函数在其操作中都采用ASCII或ISO-8859编码,并且无法正确处理其他编码 . 但是,值得再说一遍,作为数据类型的PHP字符串本身没有任何编码,没有任何东西阻止你在PHP中使用任何编码的字符串,PHP甚至提供函数来正确处理字符串操作任意编码 . 因此,只要你正确地执行它,没有什么阻止你使用PHP处理和输出UTF-8 .

    然后,Apache至少不关心你发送给客户端到底是什么,它在任何编码(或二进制数据)方面输出文本都不符合任何人的方式 . 它唯一可能做的就是在响应中添加这样的HTTP头:

    Content-Type: text/html; charset=iso-8859-1
    

    此标头仅用于通知客户端它接收的内容 . 此 Headers 不以任何方式基于您所做的实际内容 . 您应该配置Apache以设置与您实际从PHP输出的编码相对应的正确 charset 值,其默认值为 iso-8859-1 . 或者您可以自己从PHP设置 Content-Type 标头以防止Apache添加一个 . 就这样 .

    有关更多信息,请参见What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With TextHandling Unicode Front To Back In A Web App .

相关问题