[英]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
你在這里混合了一些概念:
test.getBytes("UTF-8")
返回一系列字節,表示UTF-8
編碼的字符串 new String(test.getBytes("UTF-8"), StandardCharsets.UTF_8)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.