utf-8,gbk,유 니 코드 가 서로 바 뀌 는 몇 가지 방식

6996 단어 자바부호화
utf-8,gbk,유 니 코드 가 서로 바 뀌 는 몇 가지 방식
다음 코드 는 자바 가 흔히 볼 수 있 는 인 코딩 방식 에 대해 서로 전환 하 는 것 으로 주로 gbk 와 utf-8 이 서로 전환 되 고 gbk 와 uncode 가 서로 전환 되 며 utf-8 과 유 니 코드 가 서로 전환 된다.
package com.encoding.util;

import java.io.UnsupportedEncodingException;
import java.lang.Character.UnicodeBlock;

public class UtfAndGbk {
	
	/**
	 *      
	 * utf-8 gbk
	 * @param utf8
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String utf8ToGbk(String utf8) throws UnsupportedEncodingException {
		return new String(new String(utf8.getBytes("UTF-8"), "GBK"));
	}

	/**
	 *      
	 * gbk utf-8
	 * @param utf8
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String gbkToUtf8(String utf8) throws UnsupportedEncodingException {
		return new String(new String(utf8.getBytes("GBK"), "UTF-8"));
	}
	
	/**
	 *      
	 * gbk utf-8       unicode,  utf-8
	 * @param utf8
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String gbk2utf8(String gbk) {  
        String l_temp = GBK2Unicode(gbk);  
        l_temp = unicodeToUtf8(l_temp);  
  
        return l_temp;  
    }  
	/**
	 *      
	 * utf-8 gbk      unicode  gbk
	 * @param utf8
	 * @return
	 * @throws UnsupportedEncodingException
	 */
    public static String utf82gbk(String utf) {  
        String l_temp = utf8ToUnicode(utf);  
        l_temp = Unicode2GBK(l_temp);  
  
        return l_temp;  
    }  
  
    /** 
     * gbk unicode
     * @param str 
     * @return String 
     */  
    public static String GBK2Unicode(String str) {  
        StringBuffer result = new StringBuffer();  
        for (int i = 0; i < str.length(); i++) {  
            char chr1 = (char) str.charAt(i);  
  
            if (!isNeedConvert(chr1)) {  
                result.append(chr1);  
                continue;  
            }  
  
            result.append("\\u" + Integer.toHexString((int) chr1));  
        }  
  
        return result.toString();  
    }  
  
    /** 
     *  unicode gbk
     * @param dataStr 
     * @return String 
     */  
  
    public static String Unicode2GBK(String dataStr) {  
        int index = 0;  
        StringBuffer buffer = new StringBuffer();  
  
        int li_len = dataStr.length();  
        while (index < li_len) {  
            if (index >= li_len - 1  
                    || !"\\u".equals(dataStr.substring(index, index + 2))) {  
                buffer.append(dataStr.charAt(index));  
  
                index++;  
                continue;  
            }  
  
            String charStr = "";  
            charStr = dataStr.substring(index + 2, index + 6);  
  
            char letter = (char) Integer.parseInt(charStr, 16);  
  
            buffer.append(letter);  
            index += 6;  
        }  
  
        return buffer.toString();  
    }  
  
    
    public static boolean isNeedConvert(char para) {  
        return ((para & (0x00FF)) != para);  
    }  
  
    /** 
     * utf-8  unicode 
     *  
     * @param inStr 
     * @return String 
     */  
    public static String utf8ToUnicode(String inStr) {  
        char[] myBuffer = inStr.toCharArray();  
  
        StringBuffer sb = new StringBuffer();  
        for (int i = 0; i < inStr.length(); i++) {  
            UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);  
            if (ub == UnicodeBlock.BASIC_LATIN) {  
                sb.append(myBuffer[i]);  
            } else if (ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {  
                int j = (int) myBuffer[i] - 65248;  
                sb.append((char) j);  
            } else {  
                short s = (short) myBuffer[i];  
                String hexS = Integer.toHexString(s);  
                String unicode = "\\u" + hexS;  
                sb.append(unicode.toLowerCase());  
            }  
        }  
        return sb.toString();  
    }  
  
    /** 
     *  unicode utf-8
     * @param theString 
     * @return String 
     */  
    public static String unicodeToUtf8(String theString) {  
        char aChar;  
        int len = theString.length();  
        StringBuffer outBuffer = new StringBuffer(len);  
        for (int x = 0; x < len;) {  
            aChar = theString.charAt(x++);  
            if (aChar == '\\') {  
                aChar = theString.charAt(x++);  
                if (aChar == 'u') {  
                    // Read the xxxx  
                    int value = 0;  
                    for (int i = 0; i < 4; i++) {  
                        aChar = theString.charAt(x++);  
                        switch (aChar) {  
                        case '0':  
                        case '1':  
                        case '2':  
                        case '3':  
                        case '4':  
                        case '5':  
                        case '6':  
                        case '7':  
                        case '8':  
                        case '9':  
                            value = (value << 4) + aChar - '0';  
                            break;  
                        case 'a':  
                        case 'b':  
                        case 'c':  
                        case 'd':  
                        case 'e':  
                        case 'f':  
                            value = (value << 4) + 10 + aChar - 'a';  
                            break;  
                        case 'A':  
                        case 'B':  
                        case 'C':  
                        case 'D':  
                        case 'E':  
                        case 'F':  
                            value = (value << 4) + 10 + aChar - 'A';  
                            break;  
                        default:  
                            throw new IllegalArgumentException(  
                                    "Malformed   \\uxxxx   encoding.");  
                        }  
                    }  
                    outBuffer.append((char) value);  
                } else {  
                    if (aChar == 't')  
                        aChar = '\t';  
                    else if (aChar == 'r')  
                        aChar = '\r';  
                    else if (aChar == 'n')  
                        aChar = '
'; else if (aChar == 'f') aChar = '\f'; outBuffer.append(aChar); } } else outBuffer.append(aChar); } return outBuffer.toString(); } }

좋은 웹페이지 즐겨찾기