4

在Ansi没有 BOM 的 UTF-8中编写例如 php 或 html 文档然后将它们上传到网络服务器上有什么区别?两个文档在 .

如果有人只是用记事本写,他们必须选择 Ansi,因为记事本不提供没有 Byde-Order-Mark 的 UTF-8

4

2 回答 2

4

不同之处在于,如果您在某些 8 位代码页中编写文件,然后忘记将其转换为 UTF-8,人们可能会看到您的网页损坏,因为您在 meta 中将字符集设置为 UTF-8;并且要快速应用该错误修复,您无法使用 SFTP 或 WinSCP 访问该文件,因为您必须先再次转换为 8 位代码页。

此外,UTF-8 是 Unicode,并且支持所有字符范围,而在“ANSI”代码页中则不支持。并非所有 Unicode 文档都可以转换回“ANSI”代码页,因此您不能以这种方式编辑它们。

没有理智的人会使用 Windows 记事本进行认真的编码,因为它缺乏功能、语法着色、行尾格式以及对字符集的糟糕支持。

于 2013-08-24T11:57:05.770 回答
3

不同之处在于 UTF-8 和“ANSI”(Microsoft 对各种 8 位编码的误称)是完全不同的编码,尽管它们在 ASCII 代码范围 0x00 到 0x7F 上是一致的。

将“ANSI”文件标记为 UTF-8 编码是不正确的。如果数据实际上仅包含 ASCII 字符,或者在大多数情况下,如果文件是使用指定正确编码的 HTTP 标头发送的,则该错误不会导致明显的影响。

没有理由不对 UTF-8 编码的 HTML 文件使用 BOM。另有声明的页面要么基于几年前失去所有实际影响的浏览器的信息,要么基于将 HTML 与 PHP 混淆的信息。在 PHP 文件中,BOM 可能会导致问题,因为 PHP 软件无法正确处理 BOM,即在将文件内容插入另一个文件时不会将其删除。

记事本确实无法在没有 BOM 的情况下将文件保存为 UTF-8。因此,在创建或编辑 PHP 文件时,请使用其他程序,例如Notepad++。如果你必须使用记事本,你只需要适应限制:使用“ANSI”(在找出它在你的环境中是什么之后——它可能是 windows-1252 或其他东西),在 HTTP 标头和meta标签中声明它, 并使用字符引用来表示不能用“ANSI”表示的字符。

于 2013-08-24T19:25:16.770 回答