簡體   English   中英

Netbeans 9 - 打印 Unicode 字符

[英]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 應用程序,需要執行三個操作才能在“輸出”窗口中正確呈現中文字符,您已經在執行前兩個操作:

  1. -J-Dfile.encoding=UTF-8添加到文件etc/netbeans.conf 中的屬性netbeans_default_options中,然后重新啟動 NetBeans。
  2. Projects面板設置{project} > Properties > Source > Encoding to UTF-8
  3. 在應用程序中調用System.setOut(new PrintStream(System.out, true, "UTF8")); 以便調用System.out.println()時使用的打印流支持 UTF-8 編碼。

還值得注意的是一些不必要的更改:

  • 無需在“輸出”窗口(工具 > 選項 > 雜項 > 輸出 > 字體)中選擇特定字體,因為Monospaced的默認字體工作正常。 如果不支持中文字符(例如Arial ),選擇另一種字體實際上可能會導致問題。
  • 無需在{project} > Properties > Run > VM Options 中指定file.encoding=UTF-8
  • 無需在pom.xml 中指定有關項目編碼的任何內容。

這是代碼:

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.

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