如何在Visual Studio Code中找到不是UTF-8的Unicode字符?

33

我有一些无法看到的Unicode字符,它们不是UTF-8格式的,我需要找出它们。

我使用了扩展Highlight Bad Chars (Kevin Wenger),但这还不够。特别是,我不知道这些字符是什么,也不想事先定义它们。

我该如何在Visual Studio Code中实现这个功能?


注意:有些情况下,您可能不想识别一些Unicode非UTF8字符:https://github.com/microsoft/vscode/issues/140960 - VonC
相关问题(问题的根本原因相同):*编译错误:程序中出现杂项‘\302’等* - Peter Mortensen
3个回答

68

37

你可以尝试使用我发现比Highlight Bad Chars (Kevin Wenger)更好的Gremlins扩展(至少,Gremlins开箱即用;我无法让Highlight Bad Chars突出显示任何内容)。


2
它是开源的:https://github.com/nhoizey/vscode-gremlins - JinSnow
2
高亮显示错误字符已于2021年11月2日更新,因此答案的一部分不再正确。 - gargoylebident
2
在我看来,Gremlins 是一个非常有针对性和做得很好的插件。 - jpt
非常酷的插件,感谢您的提醒。 - Jonathan Laliberte

8
在稳定版本v1.63中,有一种新的方法可以突出显示代码中可能难以发现的各种Unicode字符。以下是这些新设置:

New Unicode settings

您可以使用这些colorCustomizations来更改默认的橙色边框:
{
  "workbench.colorCustomizations": {

    "editorUnicodeHighlight.border": "#00ff37",
    "editorUnicodeHighlight.background": "#f00",        // will be in vscode v1.66

    // "minimap.unicodeHighlight": "#ff0000",           // removed in v1.64
    // "editorOverviewRuler.unicodeForeground": "#ff0000"    // removed in v1.64
}

显然,从v1.64开始,这些Unicode警告的指示器将不会显示在小地图或概览标尺中,参见考虑删除Unicode高亮滚动条装饰
以下是使用这些设置时Unicode 零宽度空格(U+200B)的外观:

Unicode zero-width space in Visual Studio Code

零宽字符是一种由上方的“Unicode高亮:不可见字符”设置控制的不可见Unicode字符

来自v1.63发布说明:Unicode高亮显示

阅读本文本文,了解如何使用不可见或易混淆的Unicode字符进行Unicode欺骗攻击。
请注意,此功能无法检测所有可能的Unicode欺骗攻击,因为这取决于您的字体和区域设置。此外,模糊字符的检测是启发式完成的。为了保险起见,在审查源代码时应使用工作区信任的受限模式,因为在不受信任的工作区中,所有非ASCII字符都会被突出显示。
可以将设置editor.unicodeHighlight.invisibleCharacterseditor.unicodeHighlight.ambiguousCharacterseditor.unicodeHighlight.nonBasicASCII设置为false以禁用相应的功能。
可以排除单个字符不被突出显示,默认情况下,注释、文本和Markdown文档中的字符不会被突出显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接