Javaweb项目参数get传递需要编码

package com.ascrm.util;

import java.io.UnsupportedEncodingException;

/**
 * @author Roly
 * TODO 
 */
public class EncodeUtils {
    
    public static String decode(String s,String charset) {
        StringBuffer sb = new StringBuffer();
    	for (int i = 0; i < s.length(); i++) {
    	    char c = s.charAt(i); 
    	    switch (c) {
    	    case '+':sb.append(' ');
    			break;
    	    case '%':
    		try {
    		    sb.append((char) Integer.parseInt(s.substring(i+1, i+3), 
    						      16));
    		    i += 2;
    		} catch (NumberFormatException e) {
    		    //原样加进去
    		    sb.append(s.substring(i+1,i+3));
    		    i += 2;
    		} catch (StringIndexOutOfBoundsException e) {
    		    String rest  = s.substring(i);
    		    sb.append(rest);
    		    if (rest.length()==2)
    			i++;
    		}
    			break;
    	    default:sb.append(c);
    			break;
    	    }
    	}
    	//需要转码
    	String result = sb.toString();
    	byte [] bytes;
		try {
			bytes=result.getBytes("ISO-8859-1");
			result=new String(bytes,charset);
		}catch(Exception e) {
			System.out.println("trans error: iso8859-1 to "+charset+"!");
		}
    	return result;
    }
    
    public static String decode(String s){
        return decode(s,"utf-8");
    }
	
	/**
	 * ===================================================
	 * 检验字符串,如果为汉字则转为ASCII代码。如果为英文则原样返回。
	 * ===================================================
	 */
	public static String encode(String s,String charset) {
		String result = s;
	    try {
			result = java.net.URLEncoder.encode(s, charset);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	    return result;
	}
	
	public static String encode(String s) {
		return encode(s,"utf-8");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值