2012-05-09 62 views
0

我創建了一個Java應用程序,它解析文本文件以提取正在加載到數據表的字段。我們正在發現一些異常處理,其中表格不能接受特殊字符,特別是Â等。刪除java中特殊字符的策略建議

這些字符在我看它時以空格出現在輸入文件中,但Java以不同的方式解釋它們。我懷疑這是一個解釋不同的字符代碼。

我的問題是這樣的:爲了過濾掉這些字符,有沒有什麼辦法可以生成一個Java的列表?我正在考慮打印CHAR和字符代碼,如果可能的話,還要輸入字符〜set〜(ASCII,ANSI,UTF-8等)。從那裏,我可以在我的結尾文件中替換角色的空間並解決我的問題。

有沒有更簡單的解決方案,我沒有看到?

+1

正確的解決方案是讓你的數據庫能夠處理這些字符。 – Jayan

+1

請勿過濾「特殊」字符。保持它們並學會正確處理字符編碼,端到端。 – artbristol

+1

您是否確定您首先正確讀取了UTF-8數據? –

回答

1

這聽起來像是你正在穿越字符集或你的輸入文件中有某種控制字符序列。你應該把精力集中在它的一面,並確保你在正確的字符集中工作。我能想到的將文件中的字符列表彙總起來的唯一方法是一個數組並循環該文件。

如果你真的想要去除所有的東西出來,看看這個線程

Regular expression for excluding special characters

它說明了如何白色和黑名單字符,正則表達式。

+0

我被給予了不知道字符集的文件。一致認爲,允許規範字符更好,但給我必須與我一起工作....我計劃數組(儘管我是逐行字節,因爲這是我如何解析我的數據已經) ,但鏈接對於如何編碼過濾器的信息非常有幫助。我非常喜歡白名單而不是黑名單。謝謝! – dwwilson66

1

嘗試解碼說,UTF8?

public static byte[] stringToByteArray(String s) 
    throws UnsupportedEncodingException { 
    return s.getBytes("UTF-8"); 
} 

或者其他一些像「iso-8859-1」並將該bytearray轉換爲字符串並嘗試打印它?