代码之家  ›  专栏  ›  技术社区  ›  Aravind Yarram

如何知道文件中有哪些特殊字符?

  •  2
  • Aravind Yarram  · 技术社区  · 15 年前

    我的应用程序需要在批处理过程中处理文本文件。有时我会收到一个文件,文件末尾有一些特殊字符。我不知道那个特殊的角色是什么。不管怎样,我能找到那个角色是什么,这样我就能告诉另一个团队哪个正在生成那个文件。

    我使用Mozilla的库来猜测文件编码,它显示为utf-8。

    3 回复  |  直到 15 年前
        1
  •  4
  •   SyntaxT3rr0r    15 年前

    首先,如果角色真的是“特殊的”或不是取决于你所说的“特殊的角色”。作为UNIX和OS X的旁注,您可以使用 外径 , 文件 六栈 用于轻松检查文件的命令:

    ... $  hexdump -C example.txt 
    00000530  6f 77 73 20 61 63 74 69  6f 6e 2e 0a 0a 0a 0a     |ows action.....|
    

    现在,如果您知道文件编码是UTF-8,则意味着将其最高位设置为零的每个字节只对应于一个字符(在上面的示例中,最后一个字节是“0A”,这意味着“0A”字节对应于一个“字符”)。

    UTF-8格式的文件还意味着最高位设置为1的每个字节都是多字节字符的一部分。例如,在以下字节序列中:

    75 20 5b e2 80 a6 5d 20  61 75 74 6f 72 69 73 61
    

    只有三个字节的最高位集是“e2 80 a6”(从0x80到0xff的所有值都有其最左边/最高位集),它们是同一个字符的一部分(在UTF-8中,不能有一个非ASCII字符,该字符由一个字节组成,该字节的最高位集为,因此您知道这三个字节是同一字符的一部分……事实上,每一个设置了最左/最高位的utf-8字节都是imho的一个非常漂亮的utf-8特性)。

    现在你在“e280a6”上搜索,你会发现它是名为“水平省略号”的Unicode字符(其代码点,以utf-8表示,由十六进制的e280a6表示)。

    所以基本上你要做两件事:

    • 找出构成最后一个“特殊”字符的字节(是一个字节还是几个字节?)

    • 找出这个/这些字节对应的“特殊字符”

        2
  •  1
  •   Anderson Imes    15 年前

    任何十六进制编辑器都应该允许您查看文件中的每个单独字节。这应该能让你告诉他们这是什么性格。

    这是我过去用过的: http://www.hexworkshop.com/

        3
  •  1
  •   Marcelo Cantos    15 年前

    在Unix上,可以使用 od 实用程序在文件或流中输出几个字节数据表示形式。

    推荐文章