[英]Netbeans 9 - Print Unicode Characters
使用 Netbeans 9:
Product Version: Apache NetBeans IDE 9.0 (Build incubator-netbeans-release-334-on-20180708)
Java: 1.8.0_181; Java HotSpot(TM) 64-Bit Server VM 25.181-b13
Runtime: Java(TM) SE Runtime Environment 1.8.0_181-b13
System: Windows 10 version 10.0 running on amd64; UTF-8; en_EN (nb)
我希望能夠打印:
String text = "你好!";
System.out.println(text);
結果是:
--- exec-maven-plugin:1.5.0:exec (default-cli) @ JavaApplication1 ---
???
我已經將-J-Dfile.encoding=UTF-8
添加到/etc/netbeans.conf
,也添加到配置中的 VM 選項。 源編碼選項也設置為 UTF-8。 過去版本的 Netbeans 沒有問題,在這里我發現無法顯示 UTF-8 字符。
我可以用哪種方式?
對於使用 Java 8 在 NetBeans 9.0 中創建的 Maven 應用程序,需要執行三個操作才能在“輸出”窗口中正確呈現中文字符,您已經在執行前兩個操作:
-J-Dfile.encoding=UTF-8
添加到文件etc/netbeans.conf 中的屬性netbeans_default_options
中,然后重新啟動 NetBeans。System.setOut(new PrintStream(System.out, true, "UTF8"));
以便調用System.out.println()
時使用的打印流支持 UTF-8 編碼。還值得注意的是一些不必要的更改:
file.encoding=UTF-8
。這是代碼:
package com.unthreading.mavenchinesechars;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
public class ChineseChars {
public static void main(String[] args) throws UnsupportedEncodingException {
System.out.println("System.getProperty(\"file.encoding\"): " + System.getProperty("file.encoding"));
System.out.println("Charset.defaultCharset(): " + Charset.defaultCharset());
System.out.println("System.getProperty(\"java.version\"): " + System.getProperty("java.version"));
String text = "你好!";
System.out.println(text); // <<<======================= Fails!
System.setOut(new PrintStream(System.out, true, "UTF8")); // Essential!
System.out.println(text); // <<<======================= Works!
}
}
這是pom.xml :
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.unthreading</groupId>
<artifactId>MavenChineseChars</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>
這是 NetBeans 中的輸出:
cd D:\NB82\MavenChineseChars; JAVA_HOME=C:\\Java\\jdk1.8.0_181 M2_HOME=C:\\apache-maven-3.6.0 cmd /c "\"\"C:\\apache-maven-3.6.0\\bin\\mvn.cmd\" -Dexec.args=\"-classpath %classpath com.unthreading.mavenchinesechars.ChineseChars\" -Dexec.executable=C:\\Java\\jdk1.8.0_181\\bin\\java.exe -Dmaven.ext.class.path=C:\\NetBeans9\\java\\maven-nblib\\netbeans-eventspy.jar org.codehaus.mojo:exec-maven-plugin:1.5.0:exec\""
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
Scanning for projects...
-----------------< com.unthreading:MavenChineseChars >------------------
Building MavenChineseChars 1.0-SNAPSHOT
--------------------------------[ jar ]---------------------------------
--- exec-maven-plugin:1.5.0:exec (default-cli) @ MavenChineseChars ---
System.getProperty("file.encoding"): Cp1252
Charset.defaultCharset(): windows-1252
System.getProperty("java.version"): 1.8.0_181
???
你好!
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 1.021 s
Finished at: 2018-12-12T18:24:12-05:00
------------------------------------------------------------------------
在輸出中,請注意:
System.setOut(new PrintStream(System.out, true, "UTF8"));
首先被調用。System.getProperty("file.encoding")
項目返回"Cp1252"而不是"UTF-8" ,中文字符也會呈現:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.