16

最近的一个问题*让我想知道是否有一个文本编辑器可以让你看到文件的每个字符,即使它们是不可见的?具体来说,我不是在寻找十六进制编辑功能,我对可以显示所有不可见字符(不仅仅是常见的空格/换行符)的文本编辑器感兴趣。BOM 标记只是一个示例,其他例如数学不可见或可能不受支持的字符。

我不是在寻找仅支持多种文本编码/编码之间翻译的文本编辑器。我遇到的所有文本编辑器都会正确处理不可见字符,即让它们不可见(或者像 BOM 标记一样在翻译中简单地删除)。

我问这个主要是出于学术兴趣,所以我并不特别关注任何特定的操作系统。我可以轻松地测试 Linux 和 OSX 解决方案,但如果您推荐 Windows 编辑器,如果您包含有关编辑器如何处理除空格/换行符之外的不可见内容的描述,我将不胜感激。

编辑:我开始确定我想要的行为可以通过自定义突出显示或通过弄乱字体本身在 emacs/vim 中实现。这种类型的解决方案也是可以接受的。

EDIT2:在查看了几个选项后,我发现 TextMate 至少显示了一个空白区域,其中文件中有一个不可见的 UTF-8 字符。对 SO 回答我的问题的能力有点失望。赏金转到 VIM,因为那是解决方案最有可能所在的方向。


*导致我提出这个问题的事件:我使用 TextWrangler 编写了一个 perl 脚本,并设法将编码更改为 UTF8 BOM,它将 BOM 标记插入文件的开头。Perl(或者更确切地说是操作系统)会立即错过 #! 混乱随之而来。然后我花了一个下午的大部分时间才弄清楚这一点,因为即使打开了各种“显示不可见”选项,大多数文本编辑器也不显示 BOM 标记。现在我已经吸取了教训,将less立即使用:-)。

4

9 回答 9

20

vim(在文本或图形模式下)可以显示所有控制字符,如果你:set list. BOM 是一种特殊情况,由:set bombor:set nobomb命令控制。

于 2010-04-04T15:13:14.300 回答
9

在 Visual Studio 的“打开文件”对话框中,“打开”按钮旁边有一个向下箭头,可让您选择“打开方式...”。结果对话框中的选项之一是Binary Editor

我不时使用它来发现一些不可见的字符或解决一些行尾问题。

于 2010-03-26T21:34:43.537 回答
6

记事本++摇滚:

核电厂

于 2010-03-26T21:34:14.507 回答
5

在 EMACS 中打开文件并执行 MX hexl-mode。您将获得如下所示的显示:

87654321 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789abcdef                               
00000000: 2320 2020 2020 2020 2020 2020 2020 2020 #               
00000010: 2020 2020 2020 2020 2020 2020 2020 2020                  
00000020: 2020 2020 2020 2020 2020 2020 2020 2020                  
00000030:2d2a 2d20 4175 746f 636f 6e66 202d 2a2d -*- 自动配置 -*-
00000040: 0a23 2050 726f 6365 7373 2074 6869 7320 .# 处理这个
00000050: 6669 6c65 2077 6974 6820 6175 746f 636f 文件与 autoco
00000060: 6e66 2074 6f20 7072 6f64 7563 6520 6120 nf 产生一个
00000070: 636f 6e66 6967 7572 6520 7363 7269 7074 配置脚本
00000080: 2e0a 2320 4f72 6465 7220 6973 206c 6172 ..# 顺序是 lar
00000090: 6765 6c79 2069 7272 6576 656c 6c61 6e74 凝胶无关
000000a0: 2c20 616c 7468 6f75 6768 2069 7420 6d75 ,虽然它是亩
000000b0: 7374 2073 7461 7274 2077 6974 6820 4143 st 以 AC 开头
000000c0: 5f49 4e49 5420 616e 6420 656e 6420 7769 _INIT 和结束 wi
000000d0: 7468 2041 435f 4f55 5450 5554 0a23 2053 th AC_OUTPUT.# S
000000e0: 6565 2068 7474 703a 2f2f 6175 746f 746f ee http://autoto
000000f0: 6f6c 7365 742e 736f 7572 6365 666f 7267 olset.sourceforg
00000100: 652e 6e65 742f 7475 746f 7269 616c 2e68 e.net/tutorial.h
于 2010-06-06T00:36:23.937 回答
3

我遇到了同样的限制——我的具体问题是需要能够显示像 U+200B(零宽度空格)和 U+200C(零宽度非连接符)这样的字符。(用于高棉语等语言的电子文本,否则不会用空格分隔单词。)与您不同,我需要一个具有 Windows和Linux 版本的编辑器,而不是“平台无关紧要” ,Mac 也是可取的。

我还没有找到任何可以让您在屏幕上显示它们的文本编辑器,尽管有些(很多?)可以让您输入它们并将它们正确地视为可以剪切和粘贴的字符,并且可以通过光标移动来指示其存在. (即如果屏幕显示“if”,并且“i”和“f”之间有 3 个 ZWSP,则必须按四次箭头键才能从“i”移动到“f”。)

TextPad 4.7.3 是我选择的文本编辑器,但它在接受脚本方面非常有限;而 TextPad 5 绝对不会显示这些不可见的东西。

我经常求助于在OpenOffice.org Writer中打开我的文件,这将在这些字符的位置显示一个灰色斜线,并打开不可见项,而Microsoft Word则为此类不可见项显示一个双框(框内框)字符. 这个双框具有宽度并更改屏幕上的换行符,这不是微不足道的,而且我在任何其他编辑器中都没有见过。

于 2010-04-24T16:47:05.437 回答
3

您也可以使用 Notepad ++ 来显示它们。这是一个例子,黑框是控制字符。

记事本++控制字符示例

于 2014-10-30T03:03:25.507 回答
2

我更喜欢UltraEdit,即使它不是免费的。它非常有能力显示隐藏的字符,包括强大的 HEX 查看模式。(我不隶属于出版商 IDM。)

于 2010-03-31T15:57:42.173 回答
1

我不确定,因为我已经有一段时间没有使用它了,但我记得SciTE是一个很好的工具,它向我展示了“太多信息”来满足我的需求。

Windows 上的程序员记事本可能会工作。

TextPad(它是 nagware,在 Windows 上运行)

我不确定其中哪些会立即显示隐藏的字符,但它们都是为“书呆子”的东西而制作的,所以我认为它们可以工作,至少稍微调整一下。我可以验证程序员的记事本确实显示“隐藏”字符。

于 2010-04-04T15:16:06.510 回答
1

如果您运行的是 32 位版本的 Windows,您可以在 MS Dos 编辑器中看到 BOM 和其他不可见字符,例如回车或换行,您可以通过在运行框中键入“编辑”来打开它或从命令提示符。不幸的是,ms dos 编辑器在 64 位系统上不可用 :(

于 2010-12-10T03:35:34.610 回答