1

当我添加并提交一个新文件时,文件名为“À”。
char 'À' 不是 ascii,使用命令

git cat-file -p master^{tree}

结果:

100644 斑点 78981922613b2afb6025042ff6bd878ac1994e85 "\303\200"

我知道字符串“\303\200”是文件名“À”,但它是怎么来的呢?

git cat-file 如何编码非 ascii char 文件名?

4

1 回答 1

2

它以UTF-8 编码存储。您看到的是这种以 C 风格八进制表示法表示的编码。

字母“À”是 Unicode 字符 192,或00011000000二进制。根据 UTF-8 的规则,这被放入两个字节110xxxxx10xxxxxx,因此1100001110000000。对于八进制表示法,它们被分组11-000-011( 303,十进制 3*8²+3 = 195) 和10-000-000( 200,十进制 2*8² = 128)。

于 2013-06-24T16:25:03.627 回答