簡體   English   中英

將Unicode數據符號轉換為字符串

[英]Converting unicode data symbols to Strings

我無法解決Java Unicode和編碼問題。 問題是我有5,000多個字符串,例如:“ Steve O#8217Conord和Mirco Savas”和...“ Rusell O&#146Connell”,其中“#8217”和“&#146”必須替換為撇號。

但是此代碼有許多不同的變體,並且apache.common.lang.StringUtils Apache庫無法幫助我解決問題,因為該庫的開頭需要“&”字符和“;”。 在末尾。 我不能在任何地方輸入這些信息,因為有超過5,000個字符串。 因此,如果可以使用正則表達式或其他方法在字符串中找到這些序列並將其替換為撇號,我將很高興聽到:)

此外,還有一些符號,例如“O’”,這是一個大問題,因為應該在UTF8中讀取它們。 我的意思是(\\ u8127)和其他字符。 你有什么建議嗎?

嘗試這樣的事情:

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;")清除要由org.apache.commons.lang3.StringEscapeUtils取消轉義的字符串中的XML實體org.apache.commons.lang3.StringEscapeUtils在此處獲取),最后將字符串以UTF-8格式寫入文件。

請注意,可以將Java配置為以UTF-8自動讀取和寫入文件。 Java應該為您的系統自動使用正確的編碼。 除非您真的知道自己在做什么,否則通常以一種特定的編碼方式顯式寫入文件通常是一個壞主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM