【Android開發日記】UTF8漢字編碼還原成漢字

使用的是網上找到的一個方法,有缺陷,自己做了改進:

\u6d4b\u8bd5\u6570\u5b57\u4e22\u5931123,

123\u6d4b\u8bd5\u6570\u5b57\u4e22\u5931,

\u6d4b\u8bd5123\u6570\u5b57\u4e22\u5931

轉化結果:

測試數字丟失123

123測試數字丟失

測試123數字丟失

public String convert(String utfString){  
        StringBuilder sb = new StringBuilder();  
        int i = -1;  
        int pos = 0; 
        
        if (utfString.contains("\\u")){
        	while((i=utfString.indexOf("\\u", pos)) != -1){  
        		sb.append(utfString.substring(pos, i));  
        		if(i+5 < utfString.length()){  
        			pos = i+6;  
        			sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16));  
        		}  
        	}
        	if(pos<utfString.length())
        		sb.append(utfString.substring(pos, utfString.length()));
        	Log.e("sb.toString()", "sb.toString()=" + sb.toString());
        	return sb.toString();  
        }
        else
        	return utfString;  
       
        
    }  

之前的方法少了這兩句:

if(pos<utfString.length())
        		sb.append(utfString.substring(pos, utfString.length()));

結果當漢字+數字混合時,如果數字在整個字符串結尾那麼數字就會被漏掉。已改進。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章