在文本文件中如何查找不可打印字符

20

我有一个文本文件需要第三方进行处理。他们告诉我该文件无效,因为它包含了一个不可打印字符。如何找到该不可打印字符是最好的方式,因为我的普通文本编辑器无法显示它。我更喜欢基于Windows、DOS或PowerShell的解决方案。


1
是的,我尝试过使用工具,但没有找到二进制字符。 - Bill Martin
2
我猜你的意思是“不可打印字符”。 “二进制字符”并没有真正意义。 - Michael Petrotta
1
为什么没有评论就踩我啊? - Bill Martin
2
@BaliC - 不幸的是,现在谷歌显示这个页面是对这个问题的最佳回答 :-/ - askvictor
6
我该如何投票以重新开放这个问题? - Allan Bowe
显示剩余7条评论
1个回答

23

选项 #1 - 显示所有字符

您可以下载 Notepad++ 并在其中打开该文件。然后,转到菜单并选择 View->Show Symbol->Show All Characters。所有字符都将变得可见,但您需要滚动整个文件才能看到需要删除哪个字符。

不幸的是,Notepad++ 会根据您的 Edit->EOL Conversion 选择自动转换行尾标记,因此如果您的不可打印字符是 CR 或 LF,则无法帮助。

选项 #2 - TextFX Zap 非打印字符

或者,您可以从 SourceForge 安装 TextFX 插件,并使用 TextFX->TextFX Characters->Zap all non-printable characters to #。这将使用井号替换某些非打印字符,但不包括 CR 或 LF。

选项 #3 - 删除 BOM 编码

最后,您可以使用 Notepad++ 并使用 Encoding->Convert to UTF8 without BOM。这将删除非打印字符,有时会导致某些渲染器(如 VSO)出现问题。


1
请注意:不幸的是,“清除所有非打印字符”也会将带有变音符号的字符,比如'é',一并清除。 - AFract
1
请注意,“UTF-8 Without BOM”现在被称为“UTF-8”。https://notepad-plus-plus.org/community/topic/7409/utf-8-without-bom-option - tryingHard
注意:在我的情况下,Notepad++没有显示这些字符,即使使用“显示所有字符”(选项#1)。我不得不在Linux上使用“od -c”或“vi”来查看它们。它们的ASCII表示是“357 273 277”或“\ufeff;”,位于我的文件开头。但是使用Notepad++将其转换为UTF-8可以解决并删除这些字符(选项#3)。 - Nic3500
1
从8.4.2版本开始,Notepad++在选择“显示所有字符”时会显示CR/LF。 - OutThere

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