2013-05-13 42 views
3

是否有專門的Mercurial配置屬性,用於指定文件內容的編碼,因此Mercurial客戶端應該使用它來正確顯示文件?Mercurial:哪個config屬性控制文件內容的編碼?

我發現web.encoding這似乎並不意味着正是我要找的。此外,Google也給出了ui.encoding的一些結果,但是我在參考文獻中找不到任何提示。

回答

1

水銀關心的不是你把你的資料庫文件的編碼:Mercurial是高興地存儲與任何編碼文件(或許不是特別編碼)。

這意味着您可以使用UTF-8,拉丁1或任何其他編碼到你的倉庫和Mercurial會檢查出來,當你加入他們,正是因爲他們是添加文件。

每個文件的編碼不存儲在水銀,它是由客戶端識別編碼(也許是基於文件內容的地方是有道理的,例如,用於XML文件)。

對於水銀桌面客戶端(如按照下面的評論)我建議您查看文件內容:

  1. 你能在UTF-16解碼呢?
  2. 你可以將它解碼爲UTF-8嗎?
  3. 在文件中NUL字節?然後停下來宣佈它是「二元」。
  4. 回退上的拉丁-N編碼如Latin-1的西歐。

的UTF-16和UTF-8編碼是好的,因爲它們是結構化的,這使得它可能爲你檢測到一個文件不是有效UTF-8編碼,說。上面的列表是用歐洲的觀點寫的 - 你應該也可以諮詢有關Shift JIS和其他在亞洲使用的編碼知識的人。

在任何情況下,我只會想到一個水銀客戶端在向我展示與非ASCII編碼文件盡最大努力嘗試。


你的問題的一些不同的解釋:

  • 如果你真的問如何讓你的文件看起來「正確的」,當你在hgweb查看它們,那麼它的使用的問題存儲庫中的一致編碼和setting `web.encoding

  • 如果你真的問如何確保文本文件獲得(在Windows \n在Unix,\r\n)結束在不同平臺上的字符操作系統自然行看看隨水銀的eol extension時。

+0

在編寫桌面Mercurial客戶端時,在顯示文件內容時是否也會使用'web.encoding'?或者你會在.hg/hrgc(或〜/ .hgrc)中引入一些新的設置? – mstrap 2013-05-14 12:59:35

+0

我會讓客戶端首先嚐試'UTF-8',然後在'Latin-1'上回退,或者只是將文件中的字節提供給用於顯示文本的任何窗口小部件。這些小部件通常會顯示一個特殊的字形,用於無法解碼的字節。 – 2013-05-16 14:47:49

0

號編碼(字符集)是存儲庫文件的屬性

+0

此屬性存儲在存儲庫中的位置在哪裏? – mstrap 2013-05-14 08:20:26

+0

@mstrap - 無處。它是文件的屬性,總是存在於文件中,只存在於文件中 – 2013-05-14 18:48:45

+0

編碼「存在於文件中」在哪裏以及如何?在Subversion中,你有(全局)屬性'svn:mime-type'。在Git中你有'gui.encoding'。你在Mercurial中有什麼? – mstrap 2013-05-15 07:08:44