2013-07-04 48 views
0

我编写了一个程序,用于从程序外部调用Unicode。我正在使用Windows XP和Eclipse。当我在IDE中运行该程序时,它显示Unicode,但是当我将它作为.jar文件导出时,我无法读取Unicode,并将其显示为框。如何在Jar文件中获取Unicode

我跟着these instructions在我的电脑中安装Unicode。我跟着链接安装the Telugu fonts到我的系统。

任何人都可以告诉我如何在Jar文件中获得Unicode吗?

+3

你已经提供了很多代码,其中大部分几乎肯定是不相关的。请提供一个简短但完整的*程序来说明问题。哦,你几乎肯定不应该使用FileReader - 使用一个包围FileInputStream的InputStreamReader,因为你可以指定编码。 –

+0

我认为我必须将JRE库添加到Jar。任何人都可以给我发送我如何添加JRE库到Jar文件。 – user18573

+4

我非常怀疑它。你似乎在“Unicode”和“一种特定字体”之间混淆。 –

回答

0

您已经完成了代码(我没有关注链接),但您可以将代码与How to import a font - 进行比较,registerFont至关重要。

同样在jar文件中,所有路径都是区分大小写。您可以用7zip或WinZip检查罐子。

2

虽然没有直接回答这个问题,但这里有一个关于如何正确从文本文件中读取/写入的小型操作系统依赖方式。

首先要知道的是,JVM具有file.encoding属性。它定义了用于所有文件读/写操作的默认编码,所有读取器在未指定编码时使用。

因此,您不希望使用默认构造函数,而是每次都定义编码。在Java中,“体现”编码的类是Charset。如果你想UTF-8,您将使用:

  • StandardCharsets.UTF_8(Java 7+)
  • Charset.forName("UTF-8")(Java的6-),
  • Charsets.UTF_8(如果你使用番石榴)。

为了正确地读出一个文件时,打开一个InputStream到该文件中,那么InputStreamReader超过该InputStream(下面的代码示例中,UTF8是从上述方法之一获得的UTF-8字符集):

final InputStream in = new FileInputStream(...); 
final Reader reader = new InputStreamReader(in, UTF8); 

为了正确地写一个文件,打开OutputStream它,那么OutputStreamWriter在该OutputStream

final OutputStream out = new FileOutputStream(...); 
final Writer writer = new OutputStreamWriter(out, UTF8); 

而且,当然,不要忘记这两个finally块中的流/读者/作者。提示:如果您不使用Java 7,请使用Guava 14.0+,请使用Closer。这是处理多个I/O资源并确保正确处理它的最安全的方法。

+0

我收到此错误消息:“不兼容的类型:InputStreamReader无法转换为Reader”我该如何解决?在此先感谢 – WVrock

+0

我已修复它。我分享,以防万一有人需要它:而不是使用作家和读者,我使用了BufferedReader和BufferedWriter:'BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out,UTF8));'对读者也是这样。此外,我认为正是这篇文章所说的是不可能的:http://stackoverflow.com/questions/30702904/might-not-have-been-initialized-error-at-null-check。这也是你如何声明UTF8:'字符集UTF8 = StandardCharsets.UTF_8;' – WVrock

+0

这解决了我的问题。非常感谢。 – m4heshd