我有一个用ANSI编码的文本:
当我尝试将其转换为UTF-8时(使用Notepad ++菜单Encoding> UTF-8),我得到了一些奇怪的字符:
我以为UTF-8是ANSI的超集,因此我以后不会遇到此类问题。无论如何,我能避免那些奇怪角色的出现吗?
我有一个用ANSI编码的文本:
当我尝试将其转换为UTF-8时(使用Notepad ++菜单Encoding> UTF-8),我得到了一些奇怪的字符:
我以为UTF-8是ANSI的超集,因此我以后不会遇到此类问题。无论如何,我能避免那些奇怪角色的出现吗?
Answers:
UTF-8 不是字符集,只是Unicode的编码。前128个字符与ASCII相同,但高128个字节不同。设置了高位(或> = 0x80)的字节是ASCII中的扩展字符,而在UTF-8中,它表示多字节序列的起始字节。上面的0x93或0x94就是这种情况。但是,我在文件中看不到任何奇怪的东西。这些是智能引号或具有不同形式的引号和closin引号,在使用诸如MS Word之类的富文本编辑器时,您经常会看到这些引号
问题已编辑。我认为那是因为您选择了错误的工具。该encode
菜单项改变编码,如果你有错误的字符显示。它只是将从磁盘读取的相同字节序列视为另一种编码。由于ASCII和UTF-8不同,因此您将获得格式错误的UTF-8字节序列,并查看上面的结果。您需要选择convert to UTF-8
它来更改整个输入字节
您还混淆了ANSI和ASCII。ANSI通常指Windows-1252,这是英语Windows和某些西欧语言中使用的字符集。它是ISO 8859-1的超集,尽管ISO 8859-1也可以称为ANSI。ISO 8859-1也是Unicode的前256个代码点,因此它是Unicode的子集,但与UTF-8编码不兼容。ASCII是7位字符集,是ANSI的一个子集,由8位编码,但有时也称为ANSI,尽管不是很正确
https://zh.wikipedia.org/wiki/ANSI_character_set
通常,字符集之间的关系如下
ASCII < ISO 8859-1 < Windows-1252
^
Unicode