【问题标题】:Text editor capable of viewing invisibles?能够查看隐形的文本编辑器?
【发布时间】:2010-03-26 21:30:13
【问题描述】:

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

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

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

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

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


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

【问题讨论】:

  • Perl 不处理 #!线;这是一条评论。您的操作系统试图解析它。无论如何,emacs + hexl-mode 会告诉你一切。
  • 我对 perl 位的看法是正确的。但我也澄清了一点问题。
  • 您需要编辑器用于什么平台?视窗? Linux?操作系统?阿米加?
  • OS X,Linux 也可以。不过,这主要是学术兴趣。
  • 不是文本编辑器,但在 Windows 中,TYPE 命令显示 BOM...

标签: text-editor computer-forensics


【解决方案1】:

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

【讨论】:

  • 是的,其实我是在想到这个问题的时候先检查了vim。可以插入不可见的,例如"i CTRL-V u2062" 用于一个不可见的数学 "times",但是没有办法让 vim 显示这个字符。如果您切换编码,您会看到一些东西,但也会弄乱您插入的字符。
  • 你去。不是我正在寻找的答案,但仍然是最好的。
【解决方案2】:

在 Visual Studio 的 Open File 对话框中,Open 按钮旁边有一个向下箭头,可让您选择 Open With... .结果对话框中的选项之一是二进制编辑器

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

【讨论】:

    【解决方案3】:

    Notepad++ 摇滚:

    【讨论】:

    • 你能验证一下 UTF8 BOM 文件在 Notepad++ 中的样子吗,特别是它是否将 显示为第一个字符?
    • -1 Notepad++ 6.1.2 从不将 显示为可见字符。
    • 它在状态栏显示文件是否使用BOM。
    【解决方案4】:

    在 EMACS 中打开文件并执行 M-X 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

    【讨论】:

    • 还有……对我自己和我来说; Control-x Control-c = 退出 emacs 环境。
    【解决方案5】:

    我遇到了同样的限制——我的具体问题是需要能够显示像 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 ,它为此类不可见物显示双框(框内框)字符。这个双框有宽度并更改屏幕上的换行符,这不是微不足道的,我在任何其他编辑器中都没有见过。

    【讨论】:

    • 哇,++ 展示了一个真实世界的用例!我的意思是我只是出于好奇:-)。无论如何,我得出的结论是,实现这一点的最简单方法是制作一个自定义 utf-8 字体映射,其中包含所有所需 ZWSP 字符的特殊字形。这也应该让它跨平台,你只需要弄清楚如何让你最喜欢的编辑器使用自定义字体。
    【解决方案6】:

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

    【讨论】:

    • 很好的提示,但您的回答中没有说明如何访问此功能。它应该在 Notepad++ 中通过 View->Symbol->All symbols 菜单选项可用。至少在记事本 7.7.1
    【解决方案7】:

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

    【讨论】:

    • 如何在 Ultraedit 中显示隐藏字符?
    • @newenglander 帮助/手册涵盖了您的问题,但它位于“查看”菜单下:Show spaces/tabsShow line endings
    【解决方案8】:

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

    Programmer's Notepad 在 Windows 上可能有效。

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

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

    【讨论】:

      【解决方案9】:

      如果您运行的是 32 位版本的 Windows,您可以在 MS Dos 编辑器中看到 BOM 和其他不可见字符,例如回车或换行,这些字符看起来像音乐八分音符,您可以通过在运行框或命令提示符。 不幸的是,ms dos 编辑器在 64 位系统上不可用:(

      【讨论】:

        猜你喜欢
        • 2016-09-13
        • 1970-01-01
        • 2012-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-30
        • 1970-01-01
        相关资源
        最近更新 更多