使用 hexdump 以及如何查找关联字符?

Using hexdump and how to find associated character?

我在数据文件上执行 hexdump 并打印出以下内容:

        > hexdump myFile.data
          a4c3

切换字节顺序后我有以下内容:

          c3a4 

我是否假设这些 HEX 值是实际的 Unicode 值? 如果是,则值为:

或者我是否将 c3a4 视为 UTF-8 数据(因为我的 Putty 会话设置为 UTF-8)然后将其转换为 Unicode?

如果是,则结果为 E4,然后是

正确的解释是什么?

您不能假设这些十六进制值是 Unicode 值。事实上,hexdump 永远不会(嗯,见下文...)给你 Unicode 值。

这些十六进制值表示创建文件时写入磁盘的二进制数据。但是为了将该数据转换回任何特定的 characters/symbols/glyphs,您需要知道创建文件时使用的特定字符编码(ASCII、UTF-8 等)。

此外,我建议使用 hexdump-C 选项(即大写 C)来给出十六进制数据的所谓“规范”表示:

c3 a4 0a

在我的例子中,还有一个 0a 表示换行符。

因此,在上面的示例中,我们有 0xc3 后跟 0xa4(我添加了 0x 部分以表明我们正在处理十六进制值)。我碰巧知道这个文件在创建时使用的是UTF-8。因此,我可以确定文件中的字符是 ä(也称为 Unicode U+00e4)。

但关键是:你必须知道文件是如何编码的,才能确定如何解释hexdump提供的字节。


Unicode 是(除其他外)字符的抽象编号系统,与任何特定编码分开。这就是它如此有用的原因之一。但碰巧它的设计者对初始字符集使用了与 ASCII 相同的编码。这就是为什么 ASCII 字母 a 与 Unicode a 具有相同的代码值。正如您在 Unicode 与 UTF-8 中看到的那样,一旦超出初始 ASCII 代码范围,编码就不一样了。