UnicodeBlock(中国語のブロック文字化けし)

1686 ワード

今日android側がアプリケーションの詳細を要求し、表示すると、空のブロックが文字化けしていることがわかりました.これについて、UnicodeBlock設定でUnicode仕様の文字ブロックのどの文字を表示できるかを説明した.
コードは次のとおりです.
	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:半角及び全角形式