在 Windows 记事本中选择保存文件时,提供多种编码格式供用户选择,包括小端(LE)和大端(BE)模式,以及 BOM(字节顺序标记)。小端表示低位字节先存储,而高位字节后存储。例如,在 UTF-16 编码中,一个字符会占用两个字节或四个字节。使用小端时,字符 "FF 00" 的存储方式是从低地址存放低位字节,而使用大端时则相反,从低地址存放高位字节。BOM 是一种用于指示文件编码的字节序列。在 UTF-16 编码中,BOM 序列为“EF BB BF”、“FF FE”或“FE FF”,它们对应于字符“Zero Width No-Break Space”。此字符没有宽度,因此不会在屏幕上显示,仅用于指示文件的编码格式。与 UTF-16 编码不同,UTF-8 编码本身能够表示字节顺序,因此 BOM 在 UTF-8 文件中实际上用于明确文件编码为 UTF-8,而非其他格式。下面详细介绍各种编码格式的区别:在文件中输入文本 "a1一" 后,分别保存为不同格式。通过使用 VS Code 的 Hex Editor 插件打开文件,可观察到以下情况:ANSI 格式文件的十六进制显示如下:字符 "a" 的编码为 61,"1" 的编码为 31,"一" 的编码为 E4 B8 80,解码后为 4E 00。UTF-8 格式文件的十六进制显示与 ANSI 格式完全相同。UTF-8 with BOM 文件的十六进制显示中,以 EF BB BF 开头,表示 UTF-8 格式。除了文件开头的 BOM 标志,其他部分与 UTF-8 格式一致。UTF-16 LE(小端)格式文件的十六进制显示以 FF FE 开头,表示小端格式。"a" 的编码为 FF 00,"1" 的编码为 31 00,"一" 的编码为 00 4E。UTF-16 BE(大端)格式文件的十六进制显示以 FE FF 开头,表示大端格式,显示方式与 UTF-16 LE 类似。特别提醒:在使用 Windows 记事本创建或另存文件时,可能会在文件开头自动插入“Zero Width No-Break Space”字符,用户可能难以察觉。因此,建议使用 VS Code 等专业文本编辑器进行文件创建或另存,以避免此类问题。