2016-06-18 4 views
2

私はTextviewを使って表示する巨大なString配列を持っています。このString配列には、匿名のcharが含まれていますが、英語では意味がありません。これらの文字を実際の意味でどのようにデコードするかを教えてください。どのように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(""); 
} 
関連する問題