我的应用需要在批处理过程中处理文本文件。偶尔我收到一个文件末尾有一些特殊字符的文件。我不确定那个特殊的角色是什么。无论如何我能找到那个角色是什么,以便我可以告诉正在制作该文件的其他团队。
我使用了mozilla的库来猜测文件编码,它说的是UTF-8。
答案 0 :(得分:4)
首先,如果角色真的“特殊”取决于你所谓的“特殊角色”。作为Unix和OS X的旁注,您可以使用例如 od , file 和 hexdump 命令来轻松检查文件:
... $ 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字节的最左/最高位被设置的事实是恕我直言,这是UTF-8真正的美丽特征。
现在你谷歌在“e2 80 a6”上,你看到它是名为“水平省略号”的Unicode字符(其代码点,以UTF-8表示,由十六进制e280a6表示)。
所以基本上你必须做两件事:
找出哪个字节组成了最后一个“特殊”字符(它只是一个字节还是几个字节?)
找到这个/这些字节对应的“特殊字符”
答案 1 :(得分:1)
任何十六进制编辑器都应该允许您查看文件中的每个字节。这应该让你告诉他们这是什么性格。
以下是我过去使用的一个:http://www.hexworkshop.com/
答案 2 :(得分:1)
在Unix上,您可以使用od
实用程序在文件或流中输出字节数据的多种表示。