`
gjhappyyy
  • 浏览: 255917 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

UnicodeBlock(解决中文中方块乱码)

    博客分类:
  • java
 
阅读更多

今天测试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 :半角及全角形式

分享到:
评论
2 楼 yzb808 2016-06-24  
Arrays.asList(ubs)在每次调用switchChar方法的时候都会执行一次,效率低且没必要。
1 楼 gjhappyyy 2012-05-23  
这个在不断工作工程中发现还有另外一种方式。editText.setTransformationMethod(PasswordTransformationMethod.getInstance())

相关推荐

Global site tag (gtag.js) - Google Analytics