利用JAVA将Unicode转换成Ascii

事情原因请详见利用javascript将unicode码转成ascii码中所描述,现在只将java代码贴上,希望能为遇到同样问题的人找到解决难题的答案

private static String convertToChinese(String dataStr) {  
        if(dataStr == null || dataStr.length() == 0) {  
            return 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;  
                if(start > 0) {  
                    buffer.append(dataStr.substring(0, start));  
                }  
                if(start == -1) {  
                    return dataStr;  
                }  
            }  
            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();  
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值