我編寫了一個程序,用於從程序外部調用Unicode。我正在使用Windows XP和Eclipse。當我在IDE中運行該程序時,它顯示Unicode,但是當我將它作爲.jar文件導出時,我無法讀取Unicode,並將其顯示爲框。如何在Jar文件中獲取Unicode
我跟着these instructions在我的電腦中安裝Unicode。我跟着鏈接安裝the Telugu fonts到我的系統。
任何人都可以告訴我如何在Jar文件中獲得Unicode嗎?
我編寫了一個程序,用於從程序外部調用Unicode。我正在使用Windows XP和Eclipse。當我在IDE中運行該程序時,它顯示Unicode,但是當我將它作爲.jar文件導出時,我無法讀取Unicode,並將其顯示爲框。如何在Jar文件中獲取Unicode
我跟着these instructions在我的電腦中安裝Unicode。我跟着鏈接安裝the Telugu fonts到我的系統。
任何人都可以告訴我如何在Jar文件中獲得Unicode嗎?
您已經完成了代碼(我沒有關注鏈接),但您可以將代碼與How to import a font - 進行比較,registerFont至關重要。
同樣在jar文件中,所有路徑都是區分大小寫。您可以用7zip或WinZip檢查罐子。
雖然沒有直接回答這個問題,但這裏有一個關於如何正確從文本文件中讀取/寫入的小型操作系統依賴方式。
首先要知道的是,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資源並確保正確處理它的最安全的方法。
我收到此錯誤消息:「不兼容的類型:InputStreamReader無法轉換爲Reader」我該如何解決?在此先感謝 – WVrock
我已修復它。我分享,以防萬一有人需要它:而不是使用作家和讀者,我使用了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
這解決了我的問題。非常感謝。 – m4heshd
你已經提供了很多代碼,其中大部分幾乎肯定是不相關的。請提供一個簡短但完整的*程序來說明問題。哦,你幾乎肯定不應該使用FileReader - 使用一個包圍FileInputStream的InputStreamReader,因爲你可以指定編碼。 –
我認爲我必須將JRE庫添加到Jar。任何人都可以給我發送我如何添加JRE庫到Jar文件。 – user18573
我非常懷疑它。你似乎在「Unicode」和「一種特定字體」之間混淆。 –