IntelliJ IDEA 控制台输出中的编码不正确

问题描述 投票:0回答:12

这似乎真的很疯狂,但我无法在 IntelliJ IDEA 的控制台中对损坏的编码执行任何操作。

我为克服这个问题所做的事情:

  1. -Dfile.encoding=UTF-8
    -Dfile.encoding=UTF-8
    中设置
    idea.exe.vmoptions
    idea64.exe.vmoptions
    (不过我使用64位版本)。
  2. 添加了
    -Dfile.encoding=UTF-8
    -Dfile.encoding=UTF-8
    来运行/调试我的应用程序的配置。
  3. 将设置 > 编辑器 > 文件编码 IDE 编码/项目编码/属性文件的默认编码更改为 UTF-8。

完成所有这些操作后,仍然没有运气,符号在控制台中没有正确显示。我尝试调试

java.io.PrintStream#println(java.lang.String)
方法,发现
System.out.textOut.out.se.cs
等于windows-1251。不知道这个值从哪里来。

这个问题困扰了我很长时间,我在网上找不到任何可以帮助我的东西。

java intellij-idea encoding utf-8 character-encoding
12个回答
49
投票

这对我有用。

  1. 关闭你的intellij idea
  2. 在安装的idea中搜索并打开文件idea.exe.vmoptions,例如:“C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.2 in”。 添加下一行后:-Dfile.encoding=UTF-8
  3. (可选)如果您有文件 idea64.exe.vmoptions,也添加相同的行。
  4. 开始你的intellij idea。

20
投票

尝试

-Dconsole.encoding=UTF-8

而不是

-Dfile.encoding=UTF-8

14
投票

你可能修改了错误的文件,

不是:

C:\Program Files\JetBrains\IntelliJ IDEA xxxx\bin\idea64.exe.vmoptions

应该是:

C:\Users\USER_NAME\.IntelliJIdeaxxxx\config\idea64.exe.vmoptions

您可以同时添加

-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8


6
投票

我的理论是你的java类文件使用“windows-1251”编码,你需要将其设置为“UTF-8”。

看下面的截图。

要重置所有文件编码,您可以手动编辑encodings.xml。 您可以在设置对话框中更改默认文件编码。


2
投票

IntelliJ IDEA 在内部使用操作系统的 shell 作为控制台。在 Windows 中,这是命令提示符。所以如果添加...

-Dconsole.encoding=UTF-8
-Dfile.encoding=UTF-8

...到

Help -> Edit Custom VM Options
下的VM选项没有帮助,请确保您的shell首先支持UTF-8字符。


2
投票

在 Intelij 编码中

java
控制台

System.out.println("Hà nội");  // unicode content

使用SDK amazon corretto版本...可以帮助你println unicode控制台


2
投票

唯一对我有用的是设置环境变量 JAVA_TOOLS_OPTIONS 在win cmd下运行

setx JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8

然后重新启动 IDE。


2
投票

已通过以下设置解决乱码问题。 (IntelliJ IDEA 社区 2022.2)

 - Build, Execution, Deployment > Build Tools > Runner > Environment vairables.
 - JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8

ScreenShot


0
投票

就我而言,在调试中检查

System.out.textOut.out.se.cs
暗示 IDEA 为每个 JUnit 运行配置拾取了 Maven Surefire 参数

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!-- force 7-bit default encoding to ensure that nothing depends on it -->
        <argLine>-Dfile.encoding=ASCII</argLine>
    </configuration>
</plugin>

我通过将

-Didea.maven.surefire.disable.argLine=true
添加到 idea64.exe.vmoptions 文件解决了这个问题。

另请参阅:https://www.jetbrains.com/help/idea/configuring-output-encoding.html


0
投票

如果有人遇到过这个问题,并且在最上面的答案中没有任何作用,请尝试下载另一个 JDK 版本并在 SDK 中使用。


0
投票

正如 @ogkasa 提到的,如果你遇到这样的问题并且没有任何帮助,只需尝试安装另一个 JDK 版本即可。我个人尝试了所有可能的解决方案,但没有一个有效。所以我刚刚回滚到 JDK 17,现在西里尔字母(这是我的问题)可以正常工作。


0
投票

波兰语字母(波兰语文学)我通过@Vadzim's提示获得:

1。编辑POM.xml

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <argLine>-Dfile.encoding=UTF-8</argLine>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.22.2</version>
                </dependency>
            </dependencies>
</plugin>

2。通过添加编辑idea64.exe.vmoptions文件
-Didea.maven.surefire.disable.argLine=true

© www.soinside.com 2019 - 2024. All rights reserved.