java - 特殊字符在 Java IDE 中显示正常,但在从 jar 文件启动的程序中不显示

标签 java character-encoding jar intellij-idea

我正在尝试用 Java 构建一个中文抽认卡程序来帮助自己学习中文。我正在使用 intelliJ IDEA 10。基本过程是我的程序将读取保存在本地计算机上的文件以生成抽认卡。该文件是使用java中的File类编写的。在记事本中打开时,它会正确显示所有字符。

当我在 IDE 中运行它时,我能够显示汉字和拼音字符(基本上是上面带有重音符号的元音)。但是,当我构建一个 jar 文件并从那里启动程序时,它不再显示特殊字符并最终显示一堆奇怪的符号。

关于为什么会这样以及如何解决它有什么想法吗?

最佳答案

IntelliJ 不使用平台默认编码,它 autodetects它基于源文件的编码。在 IntelliJ 外部运行代码时,您需要确保在读取/写入文件时明确指定正确的编码。您可以通过将其指定为 InputStreamReader 的第二个构造函数参数来做到这一点和 OutputStreamWriter分别。

File file = new File("/foo.txt");
Reader reader = new InputStreamReader(new FileInputStream(file), "UTF-8");
// ...

Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
// ...

此外,您还需要确保查看器也支持这些字体。例如 Windows 命令控制台,不支持中文。您需要创建一个 Swing 应用程序来显示结果。

关于java - 特殊字符在 Java IDE 中显示正常,但在从 jar 文件启动的程序中不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244516/

相关文章:

html - 如果我使用 UTF-8,HTML 上的问号字符和 SQL 数据上的奇怪字符,如果我使用 ISO-8859-1

java - Maven 类路径 Log4J NoClassDefFoundError

java - 在 ubuntu 中使用特定 JRE 运行 .jar

java - Rabin Karp 算法运行速度比 naive 慢

java - 如何从正式的 asn1 类定义生成 java 类?

python - 用python读取UTF-8字符时出错

ruby-on-rails - rails、wicked-pdf gem 和 é à ö 字符显示不正确

grails - 从war文件中排除所有不必要的jar

java - 风吹在弦上

java - 设计模式,基于状态处理消息