2013-04-29 41 views
1

我正在使用Apache File Utilities從.sql文件讀取下面的行。在使用apache讀取sql文件時使用的編碼FIleutilities

INSERT INTO表名(MESSAGE)VALUE( '的£ [%1]轉移到 以下[%2]:');

但在閱讀後我得到的下面:

'轉移[%1]以下的[%2]:'

問題: * £ *被讀入爲

我正在使用下面的代碼逐行讀取文件:

LineIterator it = FileUtils.lineIterator(file, "UTF-8"); 
while (it.hasNext()) { 
       lineCount++; 
       line = it.nextLine(); 
       System.out.println(line); 

打印行顯示爲:的[%1]轉移到以下的[%2]:」

當我看到NetBeans中的變量監視它表明焦炭用作\ ufffd

我讀了錯誤的編碼?

是否有任何編碼可以用來讀取SQL查詢?

+0

這看起來似乎是正確讀取文件的問題。在*顯示*值時出現錯誤也是有道理的。你怎麼知道這個價值是不正確的?你如何顯示它? – 2013-04-29 12:30:11

回答

1

這聽起來像你選擇了錯誤的編碼爲您的文件。通過嘗試使用代碼示例讀取ISO 8859-1編碼文件,我能夠重現您的問題。

您需要確定文本文件的編碼並相應地調整您的字符集。例如。

LineIterator it = FileUtils.lineIterator(file, Charsets.ISO_8859_1.name()); 

不幸的是,確定編碼是not something you can do automatically。你需要明確地告訴編碼是什麼。

+0

@Dunncan我同意你鄧肯。有沒有一種方法來識別編碼? Mine是一個.sql文件 – Wills 2013-04-29 12:44:00

+0

@Wills不,正如我在最後一段中所解釋的那樣,你無法確定地以編程方式解決這個問題。有些程序可以爲你猜測,但這只是一個猜測。 – 2013-04-29 12:47:23

+0

感謝您的幫助,請讓我知道我可以用來糾正編碼的任何資源 - 如果方便的話? – Wills 2013-04-29 12:50:58

相關問題