首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Netbeans 9-打印Unicode字符

Netbeans 9-打印Unicode字符
EN

Stack Overflow用户
提问于 2018-11-12 07:45:40
回答 1查看 2.4K关注 0票数 2

与Netbeans 9:

代码语言:javascript
运行
复制
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)

我想要能打印:

代码语言:javascript
运行
复制
String text = "你好!";
System.out.println(text);

相反,其结果是:

代码语言:javascript
运行
复制
--- exec-maven-plugin:1.5.0:exec (default-cli) @ JavaApplication1 ---
???

我已经将-J-Dfile.encoding=UTF-8添加到/etc/netbeans.conf中,也添加到配置中的VM选项中。源编码选项也设置为UTF-8。过去版本的Netbeans没有问题,这里我找不到显示UTF-8字符的方法。

我能走哪条路?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-12 23:02:29

在9/8/21上进行了更新,以注意此解决方案不适用于NetBeans 12.x版本。请参阅https://stackoverflow.com/q/69101857/2985643

对于使用Java8在NetBeans 9.0中创建的Maven应用程序,需要三个操作才能使汉字在Output窗口中正确呈现,其中前两个操作已经在执行:

  1. 在文件etc/netbeans.conf,中将-J-Dfile.encoding=UTF-8添加到属性netbeans_default_options中,然后重新启动NetBeans。
  2. Projects面板中,将{project} > Properties >Source> Encoding设置为UTF-8。
  3. 在应用程序中调用System.setOut(new PrintStream(System.out, true, "UTF8"));,以便调用System.out.println()时使用的打印流支持UTF-8编码。

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

  • 不需要在输出窗口中选择特定的字体(工具>选项>杂项>输出>字体),因为单空间的默认字体工作得很好。如果不支持汉字,选择另一种字体实际上可能会造成问题(例如Arial)。
  • 不需要在file.encoding=UTF-8 {}> Properties > Run > VM Options中指定。
  • 没有必要在pom.xml中指定有关项目编码的任何内容。

这是代码:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
<?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中的输出

代码语言:javascript
运行
复制
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”,但汉字仍呈现。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53257763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档