UltraEdit 在打开文件时自动检测文件的编码,并将其显示在状态栏的底部。请参阅 UltraEdit 高级 - 配置 - 文件处理 - Unicode/UTF-8 检测 并按 帮助 按钮了解更多详细信息。
UTF-16 在使用 UE v19.00 后的标准状态栏时显示以 UTF-16 Little Endian 编码的文件,无论是否带有 BOM。单击状态栏中的此列表框并选择 Unicode - UTF-8 会导致将文件从 UTF-16 LE 转换为 UTF-8,然后与 HTML5 文件头部的字符集声明匹配.
在 UE v19.00 或更高版本中使用基本状态栏或使用 v19.00 之前的任何 UltraEdit 版本时,状态栏字段右侧的行、列和剪贴板编号以 U- 用于 UTF-16 LE 编码的文件。
关于状态栏的 UltraEdit 帮助页面包含有关 UltraEdit 中标准和基本状态栏中显示的信息的更多信息。
UltraEdit 也可以通过子菜单 转换 中的命令 UNICODE/UTF-8 到 UTF-8(Unicode 编辑) 转换为 UTF-8 >文件。
高级 - 配置 - 文件处理 - 保存中有 2 个配置设置,它们定义了保存带或不带字节顺序标记 (BOM) 的 UTF-8 编码文件:
- 保存时将 UTF-8 BOM 标头写入所有 UTF-8 文件
- 在此程序中创建的新文件上写入 UTF-8 BOM(如果未设置上述内容)
由于 UTF-8 编码的 HTML 文件应始终没有 BOM,因此在使用 UltraEdit 主要用于编辑 HTML 文件时,最好取消选中两个 UTF-8 BOM 设置。
另一种使用 UltraEdit 转换文件的方法是使用菜单 File 中的命令 Save As 并使用适当的 Encoding / Format 设置。 另存为对话框中的 UTF-8 表示将文件另存为带有 BOM 的 UTF-8 编码文件,而 UTF-8 - NO BOM 不与 BOM 无关关于标准保存的两个配置设置。
对于使用 UltraEdit 将单个文件夹、文件夹树、在 UltraEdit 中打开等中的所有文件转换为 UTF-8,有一个 UltraEdit 脚本解决方案,请参阅How to convert all files in a folder to UTF-8?
不幸的是,UE v21.30.0.1024 仍然无法识别 HTML5 标准中定义的短字符集声明 <meta charset="utf-8">。请参阅Short utf-8 charset declaration in HTML5 header,了解有关此限制以及如何解决此限制的详细信息。如果在前 64 KB 内至少找到一个 UTF-8 编码字符,则此限制无关紧要,因为对于带有希腊文本的 HTML5 文件来说就是这种情况。
使用 UltraEdit v21.30.0.1024 安装的 HTML Tidy 的版本是 2009 年 3 月 25 日。我不确定 HTML Tidy 是否真的支持 HTML5 的短字符集声明。但它看起来如此,否则您将看不到使用 HTML Tidy 验证 HTML5 文件的警告。
阅读 UltraEdit 电源提示 Unicode text and Unicode files in UltraEdit/UEStudio 可能对您很有用,因为您似乎并不真正了解 encoding 和 character set 的真正含义以及原因对于 HTML5 中的声明与实际使用的编码匹配的应用程序很重要。
我现在回答你的问题,毕竟那些一般的 UltraEdit 东西。
这个问题会影响页面的外观吗?
虽然文件包含文件内容用UTF-8编码的声明,但实际上是用UTF-16 Little Endian编码的,浏览器显示的内容是正确的。 UTF-16 检测非常容易,尤其是在存在 BOM 的情况下,因此浏览器会忽略错误的声明,并将 HTML 文件的字节从头开始解释为 UTF-16 编码的文本文件。
但是,最好将 UTF-16 编码的 HTML 文件转换为没有 BOM 的 UTF-8。不带 BOM 的 UTF-8 最常用于全球 HTML 文件,然后您的 HTML 文件头部的字符集声明也将与实际使用的编码匹配。
是什么让 HTML Tidy 将文档定义为 utf-16?
您的 HTML 文件真正使用的编码是 UTF-16 Little Endian 和 UltraEdit,HTML Tidy 和浏览器在读取文本文件的前 2 个字节(字节顺序标记)后已经检测到这一点。这就是为什么 HTML Tidy 建议将 HTML 文件头部的编码正确地声明为 utf-16 的原因,因为文件实际上是用编码的。
如果我使用<meta charset="utf-16">,浏览器会正确解析代码吗?
如果将文件以UTF-16 LE 编码(每个字符总是2 个字节),最好用<meta charset="utf-16"> 声明字符集。但是任何支持 Unicode 的文本编辑器或浏览器都无法自动检测带有字节顺序标记的 UTF-16 Little Endian 编码。
字符集声明变得非常重要,主要对于UTF-8 编码文件(每个字符 1、2、3 甚至 4 个字节)或使用像 Windows-1252 / ISO 8859-1 这样的代码页的单字节编码字符的文件(拉丁语 1)或 Windows-1253 / ISO 8859-7(拉丁语/希腊语)。