Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 智能13。随机更改编码_Java_Intellij Idea - Fatal编程技术网

Java 智能13。随机更改编码

Java 智能13。随机更改编码,java,intellij-idea,Java,Intellij Idea,因此,我有许多具有不同编码的模块(UTF-8和ISO-8859-7) 我在设置的文件编码部分设置了各自的编码 我的maven还构建了每个项目的编码。我在git中也有这些文件,我并不是唯一一个参与这些项目的人。 上个月发生的情况如下: 在一些文件上,编码会随机更改为UTF-8,当我尝试将其更改回ISO-8859-7时,它不会更改,当我选择“重新加载”选项时,它不会执行任何操作。编码没有改变。 我要做的是以下步骤: 选择ISO-8859-7作为编码 按选项中的转换 然后,当文件在git中标记为已更

因此,我有许多具有不同编码的模块(UTF-8和ISO-8859-7) 我在设置的文件编码部分设置了各自的编码 我的maven还构建了每个项目的编码。我在git中也有这些文件,我并不是唯一一个参与这些项目的人。

上个月发生的情况如下: 在一些文件上,编码会随机更改为UTF-8,当我尝试将其更改回ISO-8859-7时,它不会更改,当我选择“重新加载”选项时,它不会执行任何操作。编码没有改变。 我要做的是以下步骤:

  • 选择ISO-8859-7作为编码
  • 按选项中的转换
  • 然后,当文件在git中标记为已更改时,我将其还原
  • 只有这样编码才能恢复正常
  • 我的IntelliJ版本:

    我的问题是: 这是一个bug还是我做错了什么/缺少了我应该配置的东西

    更新: 我想添加一些我发现有用的更多信息

    • 每当我打开IntelliJ和我前一天修复了编码的文件时,问题就会出现
    • (我不知道这是否相关,但它也会发生)当我 将文件转换为ISO编码,然后还原该编码 文件,这样我就可以看到文本,git分支变得分离
    • 我也是唯一一个在这个项目上工作的人,所以没有其他人会改变 用git提交的文件

    我可以通过在没有IntelliJ IDEA项目文件的情况下将一个包含混合文件的项目提交到Git来重现这一点,这是通常应该做的,因为人们使用不同的IDE

    然后,如果我将项目克隆到另一个目录并创建一个新的IDEA项目,编码设置会有所不同,但即使我更正了它们,第一次加载希腊文件IDEA也会认为它是UTF-8,因为“自动检测UTF编码文件”处于活动状态。如果设置为非活动状态,则相反:希腊文件将正确显示,但UTF-8文件显示为希腊文件

    无论出了什么问题,我都可以轻松地切换编码并从弹出对话框中选择“重新加载”

    然后,我将IDEA文件(.IDEA子目录加上MyProject.iml文件)提交到同一个存储库并再次克隆。这一次,两个文件都显示正确。这就是我建议的解决方法。希望它适用于项目中的所有IDEA用户。我不知道如果Eclipse用户向repo添加了一个新文件会发生什么情况,而idea仍然不知道您下次何时拉取/获取该文件。可能您必须再次分配正确的编码

    那个么IDEA如何记住哪些文件或目录有哪些编码呢?查看文件.idea/encodings.xml:

    
    
    在那里你可以看到,我已经将ISO-8859-7设置为普通文件和属性文件的默认值,并且打开了UTF猜测,就像你在屏幕截图中一样。您还可以看到项目文件$project\u DIR$/src/utf8/Unicode.java具有UTF-8编码。您未看到的内容列出了使用希腊编码的文件,因为这是项目默认设置

    底线:如果至少提交.idea/encodings.xml,则可以保留编码信息。在我看来,这不是观念上的缺陷,而是正常的事情。如果没有保存的项目状态,IDEA如何知道编码?编码不是存储在Git或文件系统中,而是元信息。这可能就是为什么XML文件在第一行的开头提到了它们自己的编码(您也可以在我的代码片段中看到)。Java文件没有这样的编码标记。因此,对于混合编码项目,您只需要小心。;-)


    更新:如果你喜欢玩,我的测试回购是打开的。

    听起来像个bug。你在YouTrack中搜索过IntelliJ:?还没有在那里找到类似的错误报告,我会再次搜索:/1其他人没有这个问题吗?也许问题只是希腊语编码:)即使在你的问题更新之后,我也无法用我的小虚拟项目重新解释这一点。我已经更改了文件,关闭了项目,恢复了更改。那么(a)您是否验证了encodings.xml在修复编码时已更新?当您重新加载文件并以错误的编码显示时,是否有任何更改?(b) 你是怎么回复的?Git命令行的想法?到底是怎么回事?请给我一个复制的方法。好吧,这并没有解决问题,我已经用更多信息更新了我的帖子:/我已经在答案中添加了我的测试回复的URL。这没有帮助。我知道这不是我面临的问题,但你也没有在你主要问题下的最新评论中回答我的问题。请努力帮助我帮助你你可以用我的回购协议作为重现问题的最低起点。如果不能复制,我也无能为力。
    <?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>