我使用Textview
显示巨大的String数组。这个String数组包含一些匿名字符,比如“—,“â”,“â”,“â”,“等等。但它在英语中没有任何意义,请帮我解释这些字符的实际含义。
我已经使用过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 :(得分:1)
相反:
Charset.forName("UTF-8");
试试这个:
Charset.forName("windows-1252");
答案 1 :(得分:-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("");
}