2012-11-20 39 views
0

我一直無法修復Java Unicode和編碼的問題。問題是,我有5,000多個字符串,如:「史蒂夫O#8217康德和Mirco Savas」和...「Rusell O &#146Connell」其中「#8217」和「&#146」必須用撇號替換。將unicode數據符號轉換爲字符串

但是這個代碼有許多不同的變種,並且apache.common.lang.StringUtils Apache庫沒有幫我解決問題,因爲庫在開始時需要「&」字符,而「;」最後。因爲有超過5000個字符串,所以無法在任何地方輸入。因此,如果有任何方式使用正則表達式或其他方法在字符串中找到這些序列並用撇號替換它們,我會很高興聽到它:)

此外,還有一些符號,如「O」而且它們是一個大問題,因爲它們應該以UTF8讀取。我的意思是像(\ u8127)和其他角色。你有什麼建議嗎?

回答

0

嘗試這樣:

import java.io.FileOutputStream; 
import java.io.PrintWriter; 
import org.apache.commons.lang3.StringEscapeUtils; 

String[] myStringPool = {"Steve O#8217Conord and Mirco Savas","Rusell O&#146Connell"}; 
PrintWriter pw = new PrintWriter("utf-8.txt", "UTF-8"); 
for(String string : myStringPool) { 
    pw.println(StringEscapeUtils.unescapeXml(string.replaceAll("&?#(\\d+);?", "&#$1;"))); 
} 
pw.close(); 

假設你已經有了這些字符串入店,string.replaceAll("&?#(\\d+);?", "&#$1;")清理字符串中的XML實體通過org.apache.commons.lang3.StringEscapeUtils(獲取它here),弦終於寫來轉義一個UTF-8格式的文件。

請注意,Java可以配置爲自動讀取和寫入文件爲UTF-8。 Java應該自動爲您的系統使用正確的編碼。除非你真的知道你在做什麼,否則明確地將文件編寫爲某種編碼通常是一個壞主意。

+0

謝謝!這幫了我很多:) –