答案1
总结
选择Convert to UTF-8
而不是Encode in UTF-8
UTF-8是不是A字符集,只是一个编码Unicode 版本。前 128 个字节值与 ASCII(以及大多数其他正常字符集)完全相同。但是,设置了高位(或 ⩾ 0x80)的字节扩展字符在 ASCII 中,而在 UTF-8 中,它们表示多字节序列。
这就是上面的 0x93 或 0x94 的情况。如果你用 ANSI 打开文件,它将使用当前的 Windows 代码页,通常是Windows-1252 在美国和大多数西欧国家/地区,这是默认设置。在 Windows-1252 中,这些字节是“智能引号”(或具有不同开头和结尾形式的曲线引号),这在使用 MS Word 等富文本编辑器时经常看到。但是,如果您选择编码 > 以 UTF-8 编码那么文件将被视为已使用 UTF-8 编码。Encode in...
菜单项用于告诉 Notepad++真实的如果显示的字符有误,请重新编码1。由于 0x93 和 0x94 本身就是格式错误的 UTF-8 多字节序列,因此它们在编辑器中保持原样
这意味着文件中没有任何异常。只是你选择了错误的工具。你需要单击Convert to UTF-8
将整个输入字节序列转换为所选编码
你还对以下问题有些困惑美国国家标准和ASCII。ANSI 不是定义的字符集,可以表示任何代码页,尽管它通常指Windows-1252. Windows-1252 是ISO-8859-1(又称 Latin-1)和 ISO-8859-1 是 Unicode 的前 256 个代码点。ASCII 是一个 7 位字符集,是几乎所有以 8 位或更多位编码的 ANSI 代码页的子集。它有时也被称为 ANSI,尽管不太正确
一般来说,主要角色集之间的关系如下
ASCII < ISO-8859-1 < Windows-1252
^
Unicode
1之所以会发生这种不幸的情况,是因为文本文件中没有嵌入编码信息,我们只能猜测,但每次都不可能猜对,而且确实会出现问题,比如著名的布什隐瞒了事实bug。请参阅
由于历史原因,Windows 同时处理 ANSI 和 Unicode 文本文件。因此,为了区分它们,它必须使用字节顺序标记作为一种签名表示它是具有特定编码的文本文件。尽管名称如此,但它不是确实是为了“字节顺序”标记目的,正如 Unix 人一直声称的那样,但纯粹是一个签名。拥有签名实际上是一件好事,每个适当的二进制文件格式都有签名。如果没有 BOM 签名,则编码为 ANSI,否则为 Unicode。由于 Unix 现在总是使用 UTF-8,并且实际上不必处理多种文本编码,因此通常不会出现像在 Windows 上那样的问题