2013-04-17 39 views
1

我正在寫一個示例測試應用程序,其主要功能是修改一些文本文件(無所謂修改)。這些測試文件通常採用txt格式。問題是,這些文件可能包含英文,德文,波蘭文,中文,阿拉伯文等文本。Java處理國際文件。編碼的東西

我的問題是,我應該注意什麼編碼的東西方面。我想確保,該應用適用於所遇到的任何角色。

你可以給我一些鏈接,我會發現有用的這些編碼的東西(讀/寫文件時)?

我正在用Java寫這個程序。

+1

總是[更喜歡Unicode](http://cafe.elharo.com/programming/the-ten-commandments-of-unicode/);我有一篇關於[Java字符處理在這裏]的一些實用性的博客文章(http://illegalargumentexception.blogspot.com/2009/05/java-rough-guide-to-character-encoding.html)。 – McDowell

+0

謝謝,真的很有用! –

回答

4

我想確保,該應用適用於任何遇到的角色。

這很好,只要你知道文件的編碼。重要的是要注意,文件的編碼與文件中的文本的語言有很大不同。例如,完全相同的字符可以用UTF-8和UTF-16表示。

對文件的編碼猜測猜測是可能的,但是如果您可以控制該文件或者允許使用相同的編碼,則要求所有輸入文件使用相同的編碼(IMO)用戶指定編碼。如果你可以控制編碼,我一般會推薦UTF-8。

+0

+1罰款,只要你知道文件的編碼 – mKorbel

2

如果你可以控制它,你想要UTF-8。但它不僅僅是一個開關 - Java幾乎在任何地方都喜歡平臺默認編碼和古老的8位UTF-8編碼。

你什麼時候需要使用編碼?

這涉及到需要編碼的任何字符串(當打印到控制檯,寫入文件或發送數據庫查詢時)以及任何進入內存需要解碼的內容(當讀取控制檯,文件,http請求,接收數據庫結果等)。

如果在這些情況下沒有指定編碼,則隱式使用編碼。總是。隱式選擇的編碼通常不是你想要的,甚至取決於程序運行的地方而改變。

對於幾乎所有的Java都有隱式編碼重載並沒有什麼幫助,它似乎總是更容易使用。

+0

我需要使用正確的編碼每次我讀/寫一行文件。節目是編輯電影字幕。儘管事實上,大多數線條都是英文的,但一些異國情調的線條(例如漢納)卻經常出現。 –

+0

@guitar_freak字幕文件通常是純文本文件,這意味着它是單字符編碼。在這種情況下,編碼不是每行都不相同,所有內容都是單一編碼。 UTF-8可以處理任何語言。問題是,如果你的程序必須編輯可能來自任何地方的字幕文件,你實際上不會控制編碼。你必須被告知文件的編碼或檢測它\([非常不可靠如果文件不是UTF-8](http://en.wikipedia.org/wiki/Charset_detection)\)。 – Esailija