2016-06-18 29 views
2

我有巨大的字符串數組通過使用Textview顯示。這個String數組包含一些匿名字符,如',',','等。但它在英語中沒有意義,請幫助我如何在實際意義上解碼這些字符。Java中的「,?,?,?」轉換如何?

我已經使用UTF-8編碼但不起作用。

private final static Charset UTF8_CHARSET = Charset.forName("UTF-8"); 

public static String getUTF8Encoded(String targetString) { 
    String resultant = ""; 
    try { 
     return new String(encodeUTF8(targetString), UTF8_CHARSET); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return resultant; 
    } 
} 

private static final byte[] encodeUTF8(String string) { 
    return string.getBytes(UTF8_CHARSET); 
} 
+0

這些字符是否有相應的拉丁字母?例如類似西裏爾字母的東西? – ishmaelMakitla

+0

[「‖」在頁面上顯示而不是「'」]的可能重複(http://stackoverflow.com/questions/2477452/%c3%a2%e2%82%ac-showing-on-page-instead -的) – Lori

回答

1

相反:

Charset.forName("UTF-8"); 

嘗試這樣的:

Charset.forName("windows-1252"); 
-1

可以使用Apache Commons Lang

org.apache.commons.lang3.StringUtils.stripAccents("Añ"); 

回報An


另一種解決方案:

這個函數的所有重音字符轉換成deAccented同行其次是他們的組合變音符號。現在你可以使用正則表達式去除變音符號。

import java.text.Normalizer; 
import java.util.regex.Pattern; 

public String deAccent(String str) { 
String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); 
Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); 
return pattern.matcher(nfdNormalizedString).replaceAll(""); 
}