簡體   English   中英

在Java中將Unicode轉換為String但棘手

[英]Unicode to String in java but tricky

我正在使用其API從網站獲取數據,該API以JSON格式返回數據。 問題是當JSON有一些變音符號時。 這將返回其UNICODE ,對於如Münich將是Mu\̈nich

當我將此JSON字符串傳遞給org.codehaus.jettison.json.JSONObject的構造函數時, Mu\̈nich被轉換為Munich (n has an umlaut) 錯誤。

我很晚才意識到這一點(在獲取了全部數據之后)。 現在,我使用以下方法將其轉換回Unicode格式,即,我將Munich (n has an umlaut)傳遞給該方法,並返回Mu\̈nich

我想這在某種程度上轉化Mu\̈nichMünich 有任何想法嗎?

請注意,僅在將u\̈轉換為ü ,將o\̈ö ,將a\̈ä a\̈需要進行轉換。

用於轉換的方法-

public static String escapeUnicode(String input) {
    StringBuilder b = new StringBuilder(input.length());
    Formatter f = new Formatter(b);
    for (char c : input.toCharArray()) {
        if (c < 128) {
            b.append(c);
        } else {
            f.format("\\u%04x", (int) c);
        }
    }
    return b.toString();
}

這些稱為變音符號 ,您可以使用規范化器將變音符號組合為單個unicode字符。

使用normalize方法並作為NFKC表格。 這將首先將整個字符串分解為變音符號,然后進行組合以返回“真實的” Unicode變音符。

因此:“慕尼黑”保持為“慕尼黑”,而“ Mu \\ u0308nchen”將變為“慕尼黑”

然后,您將獲得具有單一格式的字符串,而不再使用變音符號,並且易於攜帶和顯示。

如果使用來自不同平台的文本,則某些規范化至關重要,否則最終將遇到您描述的問題。

暫無
暫無

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

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