Java中取到前台中文这种Unicode编码问题(%u8239%u540D%u4E09)

public static void main(String[] args) {
    //取得request
    HttpServletRequest request = SessionContext.getServletContext().getRequest();
    //取得界面传参(取得面板重命名里的值)
    String chuanM=request.getParameter("chuanming");
    //如果chaunM是不标准的Unicode编码(%u8239%u540D%u4E09)对应标准的为(\u8239\u540d\u4e09)
    if(!chuanM.isEmpty()){
            chuanM = chuanM.toLowerCase();
            System.out.println(chuanM);
            
            chuanM = chuanM.replace("%", "\\");
            
            System.out.println(chuanM);
            
            
            chuanming = decodeUnicode(chuanM);
            
            System.out.println(chuanming);
            
        }

    }
    //将Unicode编码转换成中文
    public  String decodeUnicode(String dataStr) {     
        int start = 0;     
        int end = 0;     
        final StringBuffer buffer = new StringBuffer();     
        while (start > -1) {     
            end = dataStr.indexOf("\\u", start + 2);     
            String charStr = "";     
            if (end == -1) {     
                charStr = dataStr.substring(start + 2, dataStr.length());     
            } else {     
                charStr = dataStr.substring(start + 2, end);     
            }     
            char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。     
            buffer.append(new Character(letter).toString());     
            start = end;     
        }     
        return buffer.toString();     
     }

//将中文转换成Unicode编码
public class UnicdeBianMa {
        public static void main(String[] args) {
            String s = "船名三";
            System.out.println(string2Unicode(s));
        }
        public static String string2Unicode(String string) {//\u8239\u540d\u4e09    %u8239%u540D%u4E09
            StringBuffer unicode = new StringBuffer();
            for (int i = 0; i < string.length(); i++) {
                // 取出每一个字符
                char c = string.charAt(i);
                // 转换为unicode
                unicode.append("\\u" + Integer.toHexString(c));
            }
            return unicode.toString();
        }
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值