我能夠通過承諾與混合文件的項目重現這個到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,如果你喜歡玩。
聽起來像一個錯誤。您是否搜索過用於IntelliJ的YouTrack:http://youtrack.jetbrains.com/issues/IDEA? –
尚未在此處找到類似的錯誤報告 我將再次搜索:/ – zpontikas
Doesnt any1 else has this problem? – zpontikas