gbk转为utf-8|或utf-8转gbk

package dimensionallySearch;

import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import sun.io.ByteToCharConverter;
import sun.io.ByteToCharUTF8;


public class GBK2UTF8
{
    public static String unicodeToBinary(String content)
    {
        String hexStr = "";
        try
        {
            char contentBuffer[] = content.toCharArray();
            for(int i = 0; i < content.length(); i++)
            {
                int n = contentBuffer[i];
                String s = Integer.toHexString(n);
                if(s.length() > 4)
                    s = s.substring(0, 4);
                else
                    s = "0000".substring(0, 4 - s.length()) + s;
                hexStr = hexStr + "&#x" + s + ";";
            }

        }
        catch(Exception ex)
        {
            hexStr = "";
        }
        return hexStr;
    }

    public static String unicode(String instring){
        String syscode=System.getProperty("file.encoding");
       
        String regEx="(<)(.+?)(>)";
        Pattern p=Pattern.compile(regEx);
        Matcher m=p.matcher(instring);
        instring=m.replaceAll("");
        //return instring;
       
        if     (syscode.compareTo("GBK") == 0){
            String text=instring;
            byte b[] = null;
            try {
                b=text.getBytes("UTF-16LE");
            } catch (UnsupportedEncodingException e1) {
                return "";
            }
            String utf82="";
            int i = 0;
            int j=0;
            int textlen=0;
            byte[] newbie=text.getBytes();
            for (i = 0; i < b.length; i++) {
                            utf82 +="|"+Integer.toHexString(b[i])+"|";
                            if ((i+2) % 2 == 0 ){
                            newbie[j]=b[i];
                                if (b[i]>0) {
                                textlen++;
                                }
                                else if(b[i]<0 && ((i+4) % 4 == 0 )) {
                                textlen++;
                                }
                            j++;
                            }
            }
            //out.println (textlen);
            char c[] = null;
            String utf81="";
            try {
                ByteToCharConverter converter = ByteToCharUTF8.getConverter(syscode);
                //ByteToCharConverter converter = ByteToCharUTF8.getDefault();
                c = converter.convertAll(newbie);
                for (i = 0; i <textlen ; i++) {
                    utf81 += "&#x" + Integer.toHexString(c[i]) + ";";
                }
            }catch (Exception e) {
                return instring;
            }
           
           
            //catch (MalformedInputException e) {
                //return "1";
                //catch (UnsupportedEncodingException e1) {
                //return "2";
            //}
           
            return utf81;
        }else{
            int i=0;
            char c[] = null;
            String utf81="";
            try {
                int len = instring.length();
                byte b[] = instring.getBytes("utf-8");
                ByteToCharConverter converter = ByteToCharUTF8.getConverter("utf-8");
                c = converter.convertAll(b);
                int temp=0;
                byte be[] =instring.getBytes();
                int ii=0;
                int j=0;
                for (ii = 0; ii <c.length ; ii++) {
                    temp=(int)c[ii];
                    if (temp>0 && temp<128){
                        be[ii]=(byte)temp;
                    }else{
                      be[ii]=(byte)temp;
                      ii++;
                      temp=(int)c[ii];
                      be[ii]=(byte)temp;
                    }
                    j=j+1;
                }
                char ce[] = null;
                converter = ByteToCharUTF8.getConverter("GBK");
                ce= converter.convertAll(be);
               
                for (i = 0; i < j ; i++) {
                    utf81 += "&#x" + Integer.toHexString(ce[i]) + ";";
                }

                //utf81+=Integer.toHexString(ii);
            } catch (Exception e) {
                return "";
            }
            return utf81;
            }

  }

    public static void main(String[] args) {
        System.out.println(unicodeToBinary("中国"));
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值