簡體   English   中英

控制台 output 中的 IntelliJ IDEA 編碼不正確

[英]IntelliJ IDEA incorrect encoding in console output

這似乎真的很瘋狂,但我無法在我的 IntelliJ IDEA 控制台中對損壞的編碼做任何事情。

我為克服這個問題所做的事情:

  1. idea.exe.vmoptionsidea64.exe.vmoptions中設置-Dfile.encoding=UTF-8-Dfile.encoding=UTF-8 (不過我使用的是 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。 不知道這個值是從哪里來的。

這個問題困擾了我很長時間,我在 web 中找不到任何可以幫助我的東西。

這對我有用。

  1. 關閉你的智能想法
  2. 在安裝的idea中搜索並打開idea.exe.vmoptions文件,例如:“C:\\Program Files\\JetBrains\\IntelliJ IDEA 2018.3.2\\bin”。 添加下一行后:-Dfile.encoding=UTF-8
  3. (可選)如果您有文件idea64.exe.vmoptions,也添加相同的行。
  4. 開始您的 Intellij 想法。

嘗試

-Dconsole.encoding=UTF-8

代替

-Dfile.encoding=UTF-8

你可能修改了錯誤的文件,

不是: 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

我的理論是你的java類文件使用“windows-1251”編碼,你需要將它設置為“UTF-8”。

看看下面的截圖。 在此處輸入圖片說明 在此處輸入圖片說明

要重置所有文件編碼,您可以手動編輯 encodings.xml。 在此處輸入圖片說明 您可以在設置對話框中更改默認文件編碼。 在此處輸入圖片說明

在 Intelij 編碼java控制台

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

使用 SDK amazon corretto 版本...可以幫助您打印 unicode 控制台

在此處輸入圖像描述

唯一對我有用的是設置環境變量 JAVA_TOOLS_OPTIONS 在 win cmd 中運行

setx JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8

並重啟 IDE。

就我而言,在調試中檢查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

IntelliJ IDEA 在內部使用操作系統的 shell 作為控制台。 在 Windows 中,這是命令提示符。 所以如果添加...

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

... Help -> Edit Custom VM Options無濟於事,請確保您的外殼首先支持 UTF-8 字符。

如果有人遇到過這個問題並且在最佳答案中沒有任何效果,請嘗試下載另一個 JDK 版本並在 SDK 使用。

正如@ogkasa 所提到的,如果您遇到這樣的問題並且沒有任何幫助,請嘗試安裝另一個 JDK 版本。 我個人嘗試了所有可能的解決方案,但都沒有奏效。 所以我剛剛回滾到 JDK 17,現在西里爾字母(這是我的問題)可以正常工作。

亂碼已通過以下設置解決。 (IntelliJ IDEA 社區 2022.2)

  • 構建、執行、部署 > 構建工具 > 運行器 > 環境變量。
  • JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8

截屏

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM