UnicodeBlock(中国語のブロック文字化けし)
1686 ワード
今日android側がアプリケーションの詳細を要求し、表示すると、空のブロックが文字化けしていることがわかりました.これについて、UnicodeBlock設定でUnicode仕様の文字ブロックのどの文字を表示できるかを説明した.
コードは次のとおりです.
やはりブロックの文字化けしてしまった.
UnicodeBlock.CJK_UNIFIED_IDEOgraPHS:CJK統一表意記号UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION:CJKシンボルと句読点
CJKは「Chinese,Japanese,Korea」の略で、実は中日韓三国の象形文字のUnicodeコード
次の4つはラテン文字を表示します
UnicodeBlock.BASIC_LATIN,UnicodeBlock.LATIN_1_SUPPLEMENT,UnicodeBlock.LATIN_EXTENDED_A,UnicodeBlock.LATIN_EXTENDED_B,
次の二つは日本語のひらがなとカタカナを表示します.
UnicodeBlock.KATAKANA,UnicodeBlock.HIRAGANA,
UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS:半角及び全角形式
コードは次のとおりです.
public void setAppAbstract(String info){
StringBuffer tmp = new StringBuffer() ;
for(char cc : info.toCharArray()){
tmp.append(switchChar(cc));
}
info = tmp.toString().replaceAll("\r", "").replaceAll("\t", " ").replaceAll("\b", " ").replaceAll("\f", "");
infoView.setText(info);
}
private char switchChar(char source){
UnicodeBlock ub = Character.UnicodeBlock.of(source);
if(Arrays.asList(ubs).contains(ub)){
return source ;
}
return ' ';
}
private static final UnicodeBlock[] ubs = new UnicodeBlock[]{
UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS,
UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION,
UnicodeBlock.BASIC_LATIN,
UnicodeBlock.LATIN_1_SUPPLEMENT,
UnicodeBlock.LATIN_EXTENDED_A,
UnicodeBlock.LATIN_EXTENDED_B,
UnicodeBlock.KATAKANA,
UnicodeBlock.HIRAGANA,
UnicodeBlock.BOPOMOFO
};
やはりブロックの文字化けしてしまった.
UnicodeBlock.CJK_UNIFIED_IDEOgraPHS:CJK統一表意記号UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION:CJKシンボルと句読点
CJKは「Chinese,Japanese,Korea」の略で、実は中日韓三国の象形文字のUnicodeコード
次の4つはラテン文字を表示します
UnicodeBlock.BASIC_LATIN,UnicodeBlock.LATIN_1_SUPPLEMENT,UnicodeBlock.LATIN_EXTENDED_A,UnicodeBlock.LATIN_EXTENDED_B,
次の二つは日本語のひらがなとカタカナを表示します.
UnicodeBlock.KATAKANA,UnicodeBlock.HIRAGANA,
UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS:半角及び全角形式