今天测试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编码
下面的四个是显示拉丁字符
UnicodeBlock.BASIC_LATIN,
UnicodeBlock.LATIN_1_SUPPLEMENT,
UnicodeBlock.LATIN_EXTENDED_A,
UnicodeBlock.LATIN_EXTENDED_B,
下面两个是显示日语中的平假名和片假名
UnicodeBlock.KATAKANA,
UnicodeBlock.HIRAGANA,
UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS :半角及全角形式