java - 当从命令行或 jar 文件执行应用程序时,JTable 将无法正确显示 Unicode。不过在 Eclipse 中它工作得很好

标签 java eclipse unicode command-line jtable

我正在编写一个应用程序,该应用程序读取包含英语和中文词汇列表的文本文件。然后将它们显示在 JTable 中。当我在 Eclipse 中运行或调试应用程序时,一切都显示正常。我可以看到并阅读文字和英文。但是,当我从命令行或可执行 jar 执行应用程序时,一切都是错误的。这些字符要么显示为方 block ,要么显示为乱码。

我还有一个文本框,当我在其中输入中文时,它会正确显示。

我的第一个想法是这是字体问题。我正在使用系统上安装的字体。由于我无法保证使用此应用程序的人将拥有该字体,因此我将其移动到资源文件夹并从文件加载字体。字体看起来好像已加载,因此我确信这不是字体问题。

我发现另一个问题建议使用-Dfile.encoding=utf-8。我已经尝试过了,但没有成功。

Stack Overflow 的杰出人士对如何实现这项工作有什么建议吗?

最佳答案

I'm writing this on a non-chinese version of Windows.

那么你将永远无法让 Java 程序产生中文命令行输出。

像几乎所有语言一样,Java 使用具有基于字节 IO 的 C 标准库。 Windows 命令提示符使用特定于区域设置的默认代码页解释基于字节的 IO。这绝不是 UTF,因此当前语言环境默认代码页之外的 Unicode 字符将无法工作。

(理论上,您应该能够通过更改控制台字体并使用 chcp 65001 (UTF-8) 和 -Dfile.encoding=UTF-8 来使其工作,但实际上,由于 C 运行时中的错误,它无法可靠地工作。命令提示符上的 Unicode 是一个长期存在的痛点。)

关于java - 当从命令行或 jar 文件执行应用程序时,JTable 将无法正确显示 Unicode。不过在 Eclipse 中它工作得很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9546857/

相关文章:

java - 根据 xml 模式验证 xml 文件

Java 在字符串中看不到空格

java - 条件条款未按预期发挥作用

java - Eclipse 中的包资源管理器 View

java - 无法使用 Tomcat 运行 Spring REST 应用程序

javascript - 如何在 JavaScript 中检测 Unicode 中的不可见(零宽度或空白)字符

java - fragment 与传承

android - 绘图 Canvas FC

django - 如何在 Django 1.5 中获得对 rfc6532(电子邮件地址地址部分中的 unicode)的支持?

sql-server - 特殊字符(夏威夷语“Okina”)导致奇怪的字符串行为