原文 http://blog.xuahua.com/articles/2016/03/09/1457510183958.html

    	/**
    	 * GBK格式转换成utf-8编码
    	 * @param str
    	 * @return
    	 * @throws UnsupportedEncodingException
    	 */
    	public static String gbToUtf8(String str)
    			throws UnsupportedEncodingException {
    		StringBuffer sb = new StringBuffer();
    		for (int i = 0; i < str.length(); i++) {
    			String s = str.substring(i, i + 1);
    			if (s.charAt(0) > 0x80) {
    				byte[] bytes = s.getBytes("Unicode");
    				String binaryStr = "";
    				for (int j = 2; j < bytes.length; j += 2) {
    					// the first byte
    					String hexStr = getHexString(bytes[j + 1]);
    					String binStr = getBinaryString(Integer.valueOf(hexStr, 16));
    					binaryStr += binStr;
    					// the second byte
    					hexStr = getHexString(bytes[j]);
    					binStr = getBinaryString(Integer.valueOf(hexStr, 16));
    					binaryStr += binStr;
    				}
    				// convert unicode to utf-8
    				String s1 = "1110" + binaryStr.substring(0, 4);
    				String s2 = "10" + binaryStr.substring(4, 10);
    				String s3 = "10" + binaryStr.substring(10, 16);
    				byte[] bs = new byte[3];
    				bs[0] = Integer.valueOf(s1, 2).byteValue();
    				bs[1] = Integer.valueOf(s2, 2).byteValue();
    				bs[2] = Integer.valueOf(s3, 2).byteValue();
    				String ss = new String(bs, "UTF-8");
    				sb.append(ss);
    			} else {
    				sb.append(s);
    			}
    		}
    		return sb.toString();
    	}
    
    	private static String getHexString(byte b) {
    		String hexStr = Integer.toHexString(b);
    		int m = hexStr.length();
    		if (m < 2) {
    			hexStr = "0" + hexStr;
    		} else {
    			hexStr = hexStr.substring(m - 2);
    		}
    		return hexStr;
    	}
    
    	private static String getBinaryString(int i) {
    		String binaryStr = Integer.toBinaryString(i);
    		int length = binaryStr.length();
    		for (int l = 0; l < 8 - length; l++) {
    			binaryStr = "0" + binaryStr;
    		}
    		return binaryStr;
    	}
    
    	/**
    	 * UTF-8格式的字符串,转换成GB2312
    	 * 
    	 * @param str
    	 * @return
    	 */
    	public static String utf8Togb2312(String str) {
    		String utf8 = "";
    		String unicode = "";
    		String gbk = "";
    		try {
    			utf8 = new String(str.getBytes("UTF-8"));
    			// System.out.println(utf8);
    			unicode = new String(utf8.getBytes(), "UTF-8");
    			// System.out.println(unicode);
    			gbk = new String(unicode.getBytes("GBK"));
    		} catch (UnsupportedEncodingException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    		return gbk;
    	}
    
    	/**
    	 * 将 GB2312 编码格式的字符串转换为 UTF-8 格式的字符串:
    	 * 
    	 * @param str
    	 * @return
    	 */
    	public static String gb2312ToUtf8(String str) {
    		String urlEncode = "";
    		try {
    			urlEncode = URLEncoder.encode(str, "UTF-8");
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		}
    		return urlEncode;
    	}
    联系QQ:343886028 --加QQ群 145315854