将我的文件从.htm重命名为.php搞砸了字符编码..?

时间:2011-09-22 14:46:24

标签: php html character-encoding

我获得了工作,在一个完全是HTML和JavaScript的网站的SEO工作。我看到的第一件事是,他们在每一页都硬编码了页眉和页脚(我想编辑)。

我决定将所有.htm文件更改为.php,以便利用php include功能,并将页眉和页脚作为单独的文件包含在每个页面中(是的,我知道我可以修改.htaccess文件以将.htm文件视为.php,但还有一些我想要的原因.php)。

更改后,网站上的特殊字符开始在黑色背景上显示为问号或仅作为普通问号。当我从主机的cPanel打开.php文件时,我在编辑器的顶部看到编码是UTF-8,所以我不明白问题是什么。我解决这个问题的方法是某种“魔法”,我讨厌它并不总是第一次起作用 - 复制整个文件中的代码,将编码更改为us-ascii,save(此时)文件变空oO),CLOSE,打开备份,粘贴代码,告诉编辑器将其打开为utf-8(它创建一个新文件......),将代码粘贴回来。然后是特殊字符(像cyrilic等)正确显示。

我不想这样做,因为网站上有很多页面,而且我想了解正确的方法。任何人都可以提供任何帮助吗?

1 个答案:

答案 0 :(得分:1)

文件编码必须与HTTP标头声明的字符集和HTML文件的元标记匹配。

你的HTML中是否有这样的东西:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

当您使用Firebug(或其他任何内容)检查HTTP标头时,您会看到类似的内容(请注意“内容类型”):

Response Headers
Date              Thu, 22 Sep 2011 14:53:26 GMT
Server            Apache mod_fcgid/2.3.6 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Expires           Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control     private, max-age=10800, pre-check=10800
Content-Language  EN
Last-Modified     Fri, 22 Jul 2011 13:22:29 GMT
Content-Type      text/html; charset=UTF-8

当您在编辑器中打开文件并检查它的字符集时,它是否与上面相同?如果您使用UTF-8,那么没有BOM 会添加到您的文件中(至少对于PHP文件)。

我猜你的编辑搞砸了......你能提供实际页面的URL吗?它可以帮助我们确定究竟发生了什么。