簡體   English   中英

將項目編碼設置為UTF-8,默認字符集返回windows-1252

[英]Encoding for project set to UTF-8, default charset returns windows-1252

我遇到了編碼問題。 不確定它是否與IDE有關,但我使用的是NetBeans 7.4。 我在J2EE項目中得到了這段代碼:

    String test = "kukuřičné";
    System.out.println(new String(test.getBytes("UTF-8"))); // should display ok
    System.out.println(new String(test.getBytes("ISO-8859-1")));
    System.out.println(new String(test.getBytes("UTF-16")));
    System.out.println(new String(test.getBytes("US-ASCII")));
    System.out.println(new String(test.getBytes("windows-1250")));
    System.out.println(test); // should display ok

當我運行它時,它永遠不會正常顯示。 UTF-8應該可以打印出來,但不是。 當我嘗試時:

    System.out.println(Charset.defaultCharset());

它返回了windows-1252。 該項目設置為UTF-8編碼。 我甚至嘗試在UTF-8中重新保存這個特定的java文件,但它仍然無法正常顯示。

另一方面,我試圖創建J2SE項目,當我運行相同的代碼時,它正確顯示。 默認字符集也返回UTF-8。

兩個項目都設置了UTF-8編碼。

我希望我的J2EE項目像J2SE一樣運行。 直到我將我的java更新到版本1.7.0_51-b13之前我才注意到這個問題但是我不確定這是否相關。

我遇到了像這個家伙一樣的問題: http//forums.netbeans.org/ptopic37752.html

我也嘗試過為整個IDE設置默認編碼:-J-Dfile.encoding = UTF-8但它沒有幫助。

我注意到一個重要的事實。 當我創建一個新的Web應用程序時,它顯示正常。 當我創建新的Maven Web應用程序時,它顯示不正確。

在這里發現了同樣的問題: https//netbeans.org/bugzilla/show_bug.cgi?id = 224456

我還沒有修好它。 仍然沒有解決方案。

在我的pom.xml中,編碼設置正確,但最后仍顯示windows-1252。

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

我花了幾個小時試圖找到最好的解決方案。

首先,這是一個maven的問題,即使您已指定要使用的不同編碼,它也會選擇平台編碼並使用它。 Maven似乎並不關心(它甚至打印到控制台,它使用的是UTF-8,但是當您使用上面的代碼運行文件時,它將無法正常顯示)。

我設法通過設置系統變量來解決這個問題:

JAVA_TOOL_OPTIONS = -Dfile.encoding = UTF8

應該有另一個選項而不是設置系統變量,即將其設置為附加的編譯器參數。

比如javac -Dfile.encoding = UTF8

你在這里混合了一些概念:

  • 項目編碼是用於保存Java源文件(xxxx.java)的編碼 - 它與代碼的執行方式無關
  • test.getBytes("UTF-8")返回一系列字節,表示UTF-8編碼的字符串
  • 要重新創建原始字符串,您需要顯式地給出編碼,除非它是您的機器的默認值: new String(test.getBytes("UTF-8"), StandardCharsets.UTF_8)

暫無
暫無

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

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