在开发j2me浏览器时,对于html的unicode实体编码,我们需要将转换才能正常显示。如下面这样一段代码:
<a href="http://wap.monternet.com/">返回移动梦网</a><br />
方法如下:
private static String decodeUnicode(final String dataStr) { int start = 0; int end = 0; final StringBuffer buffer = new StringBuffer(); while (start > -1) { int system = 10;//进制 if(start==0){ int t = dataStr.indexOf("&#"); if(start!=t)start = t; } end = dataStr.indexOf(";", start + 2); String charStr = ""; if (end != -1) { charStr = dataStr.substring(start + 2, end);
//判断进制 char s = charStr.charAt(0); if(s=='x' || s=='X'){ system = 16; charStr = charStr.substring(1); } } //转换 try{ char letter = (char) Integer.parseInt(charStr,system); buffer.append(new Character(letter).toString()); }catch(NumberFormatException e){ e.printStackTrace(); }
//处理当前unicode字符到下一个unicode字符之间的非unicode字符 start = dataStr.indexOf("&#",end); if(start-end>1){ buffer.append(dataStr.substring(end+1, start)); }
//处理最后面的非unicode字符 if(start==-1){ int length = dataStr.length(); if(end+1!=length){ buffer.append(dataStr.substring(end+1,length)); } } } return buffer.toString(); }
|