2013-07-04 44 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