unicode在记事本中不可见,但在控制台中可见

unicode在记事本中不可见,但在控制台中可见,unicode,notepad,Unicode,Notepad,我正在记事本中保存一个文件,收到一条警告消息,该文件包含无法正确保存为ansi的unicode。我没有看到任何有问题的字符,所以我在控制台中打开了文件,在文本中找到了这些随机字符。它们在记事本中根本不可见。即使它们在控制台中占据的空间也不在记事本中。下面我在记事本和控制台中发布了文本的屏幕截图。发生什么事了 记事本 控制台 控制台上显示的字符是a的UTF-8编码,在记事本或任何其他Unicode应用程序中都不可见。控制台通常不使用Unicode,它使用代码页(通常)根据输出的字节确定要显示的字

我正在记事本中保存一个文件,收到一条警告消息,该文件包含无法正确保存为ansi的unicode。我没有看到任何有问题的字符,所以我在控制台中打开了文件,在文本中找到了这些随机字符。它们在记事本中根本不可见。即使它们在控制台中占据的空间也不在记事本中。下面我在记事本和控制台中发布了文本的屏幕截图。发生什么事了

记事本

控制台


控制台上显示的字符是a的UTF-8编码,在记事本或任何其他Unicode应用程序中都不可见。控制台通常不使用Unicode,它使用代码页(通常)根据输出的字节确定要显示的字符。零宽度空间的UTF-8编码为3个字节
\xe2\x80\x8b
,因此您可以在控制台上看到3个字符,因为您有两个零宽度空间,所以字符数加倍。

非常有用,非常感谢。我需要坐下来,真正熟悉不同类型的编码。是否有一种相对简单的方法可以以可编辑的格式查看UTF-8字节,以便我可以编辑它们?他们正在破坏我的程序。@jana你可以很容易地编写一个程序来删除他们。只需丢弃任何值不在0和127之间的字节。@jana:我使用,这是一个内置十六进制编辑器的文本编辑器,支持UTF-8和UTF-16编码。因此,您可以将UTF-8文件加载到其中,切换到十六进制视图,删除有问题的字节,然后再次将文件另存为UTF-8。您甚至可以将文本视图切换到Ansi,使UTF-8字节在视觉上突出,就像控制台窗口一样。@Mark Ransom:再次感谢。看起来会有用的。@Remy Lebeau非常感谢,我去看看编辑。