所以我有很多模块有不同的编码(UTF-8和ISO-8859-7) 我在设置的文件编码部分设置了各自的编码 我的maven建立了每个项目的编码状态。我也有这些文件在git中,我并不是唯一的这些项目,即其他人也在其中。
上个月会发生什么: 随机地在某些文件上编码更改为UTF-8,当我尝试将其更改回ISO-8859-7时,当我选择“重新加载”选项时,它不会发生任何变化。编码不会改变。 我要做的是以下步骤:
我的IntelliJ版本:
我的问题是: 这是一个错误还是我做错了什么/丢失了我应该配置的东西?
更新:
我想添加一些我发现有用的信息
答案 0 :(得分:6)
我能够通过将带有混合文件的项目提交给没有IntelliJ IDEA项目文件的Git 来重现这一点,这是应该做的,因为人们使用不同的IDE。
然后,如果我将项目克隆到另一个目录并创建一个新的IDEA项目,编码设置是不同的,但即使我更正它们,第一次加载希腊文件IDEA认为它是UTF-8因为&# 34;自动检测UTF编码的文件"活跃。如果设置处于非活动状态,则相反:希腊语文件将正确显示,但UTF-8文件显示为希腊语。
无论出了什么问题,我都可以轻松切换编码并选择"重新加载"从弹出式对话中。
然后我将IDEA文件( .idea 子目录加 MyProject.iml 文件)提交到同一个存储库并再次克隆。这次文件都正确显示。所以这是我建议的解决方法。希望它适用于您项目中的所有IDEA用户。我不知道如果发生什么,例如Eclipse用户向repo添加一个新文件,当您下次提取/获取时,IDEA仍然不知道该文件。可能你必须再次分配正确的编码。
那么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上。