我遇到了一個帶有這樣檔案的 repo: til/LINQサンプル.cs/LINQサンプル.cs/Program.cs,它在 git-log 中編碼為"LINQ\343\202\265\343\203\263\343\203\227\343\203\253.cs/LINQ\343\202\265\343\203\263\343\203\227\343\203\253.cs/Program.cs"
Git 對非 ASCII 字符的檔案名使用什么編碼?
我已經嘗試過的
- 使用不同的
--encoding引數值 - 閱讀git-log 檔案
- 將 unicode 文本轉換為位元組:
- 文字(4個字形):サンプル
- 編碼入日志(12個數字):\343\202\265\343\203\263\343\203\227\343\203\253
- 文本位元組(12 位元組):227 130 181 227 131 179 227 131 151 227 131 171
uj5u.com熱心網友回復:
Git 對非 ASCII 字符的檔案名使用什么編碼?
tl;博士。Git 存盤檔案系統所做的任何位元組。在您的情況下,\343\202\265是八進制(基數為 8)。轉換為十六進制給出e382b5. 這是 サ 的 UTF-8 編碼。git-log,默認情況下,將檔案名解釋為 UTF-8。
Git 將檔案名存盤在樹物件中,類似于目錄。您可以通過添加^{tree}. git cat-file -p HEAD^{tree}顯示當前結帳的頂級樹物件。
例如,如果我們有檔案,til/LINQサンプル.cs我們會看到...
git cat-file -p HEAD^{tree}
040000 tree 4ef35381184b94ea9e9114a9ab37a9ed2061f598 til
這表示 til 是一個 ID 為 4ef35381184b94ea9e9114a9ab37a9ed2061f598 的樹物件(目錄)。如果我們檢查那個樹物件......
$ git cat-file -p 4ef35381184b94ea9e9114a9ab37a9ed2061f598
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 LINQサンプル.cs
這表示 til/ 包含存盤在 blob 物件 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 中的權限為 0644 的檔案 LINQサンプル.cs。
如果我們查看那個樹物件,我們會看到......
100644 LINQ\343\202\265\343\203\263\343\203\227\343\203\253.cs
這是 LINQサンプル.cs 的 UTF-8 編碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346810.html
標籤:混帐
