2014-05-21 44 views
5

所以我必須有不同的編碼(UTF-8和ISO-8859-7) 我設置各自的編碼在設置文件編碼部分,我的Maven構建狀態的許多模塊每個項目的編碼也是如此。我也有這些文件在git中,我並不孤單在這些項目中,也就是其他人也在這些項目中提交。 enter image description hereIntelliJ 13 Ult。編碼隨機變化

上個月發生的是這樣的: 隨機對一些文件的編碼更改爲UTF-8,當我試圖改變它回ISO-8859-7它沒有當我選擇的選項更改「重新加載「它什麼都不做。編碼不會改變。 enter image description here 我要做的是以下步驟:

  1. 選擇ISO-8859-7編碼爲
  2. 在選擇轉換
  3. 然後在Git中我改變被標記的文件恢復它
  4. 只有不編碼回到正常

我的IntelliJ版本:
enter image description here

我的問題是這樣的: 這是一個錯誤還是我做錯了什麼/缺少我應該配置的東西?

更新: 我想添加一些更多的信息,我發現有用

  • 這個問題似乎每次我打開的IntelliJ時間和文件,我有固定的編碼前一天。
  • (我不知道這是否是相關的,但它同樣會發生)當我 轉換文件到ISO編碼的編碼,然後恢復了 文件,這樣就可以看到文本,git的分支成爲分離
  • 我也只有我一個人在這個項目上,以便沒有人別的事情改變 在混帳COMMITED文件
+0

聽起來像一個錯誤。您是否搜索過用於IntelliJ的YouTrack:http://youtrack.jetbrains.com/issues/IDEA? –

+0

尚未在此處找到類似的錯誤報告 我將再次搜索:/ – zpontikas

+0

Doesnt any1 else has this problem? – zpontikas

回答

6

我能夠通過承諾與混合文件的項目重現這個到Git 沒有IntelliJ IDEA的項目文件,這是通常應該做的因爲人們使用不同的IDE。

然後,如果我將項目克隆到另一個目錄並創建一個新的IDEA項目,編碼設置是不同的,但即使我更正它們,第一次加載希臘文件IDEA認爲它是UTF-8,因爲「自動檢測UTF編碼文件「處於活動狀態。如果設置不活動,則相反:希臘文件將正確顯示,但UTF-8文件顯示爲希臘文。

無論出什麼問題,我都可以輕鬆切換編碼並從彈出對話框中選擇「重新加載」。

然後我提交了IDEA文件(。想法子目錄加MyProject.iml文件)到同一個存儲庫並再次克隆。這次文件都正確顯示。所以這是我建議的解決方法。希望它適用於您項目中的所有IDEA用戶。我不知道會發生什麼,例如, Eclipse用戶將新文件添加到IDEA未知的repo中,當您下次執行/取出時。可能你將不得不再次分配正確的編碼。

那麼IDEA如何記住哪些文件或目錄具有哪種編碼?看看文件.idea/encodings.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project version="4"> 
    <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" defaultCharsetForPropertiesFiles="ISO-8859-7"> 
    <file url="file://$PROJECT_DIR$/src/utf8/Unicode.java" charset="UTF-8" /> 
    <file url="PROJECT" charset="ISO-8859-7" /> 
    </component> 
</project> 

在那裏,你可以看到,我有ISO-8859-7設置爲默認的普通和屬性文件和UTF猜測接通,就像你在你的截圖中。您還會看到項目文件$ PROJECT_DIR $/src/utf8/Unicode.java具有UTF-8編碼。你看不到列出的文件是希臘編碼的文件,因爲這是項目默認值。底線:如果您至少提交了.idea/encodings.xml您可以保留編碼信息。在我看來,這是IDEA中的錯誤,但這是正常的事情。如果您沒有保存的項目狀態,IDEA如何知道編碼?編碼不存儲在Git或文件系統中,它是元信息。這可能就是爲什麼XML文件在第一行的開頭就提到了他們自己的編碼(正如您在上面的代碼片段中看到的那樣)。 Java文件沒有這樣的編碼標籤。所以對於混合編碼項目,你只需要小心。 ;-)

更新:我的測試回購是在GitHub,如果你喜歡玩。

+0

感謝您的答案偉大的工作。我會看看。 :D – zpontikas

+0

嗯,這並沒有解決問題,我更新了我的帖子更多的信息:/ – zpontikas

+0

我已經添加了我的測試回購的URL到答案。 – kriegaex