您的位置:首页 > 编程语言 > Java开发

java实现utf-8与GB2312编码的转换

2011-01-26 16:16 609 查看
Java
则采用了平台无关的
UNICODE,Java
从一个
byte
流中读取一个字符串时,将把平台
相关的
byte
转变为平台无关的
Unicode
字符串。在输出时
Java
将把
Unicode
字符串转变为平台相关的
byte
流,如果某个
Unicode

符在某个平台上不存在,将会输出一个
'?'


GB2312
编码中一个汉字是
16
位的,而
UTF8
中一个汉字却是
24
位的。如果实现
UTF-8

gb2312
编码的相互转换呢?今天整理了一番,给出两者进行转换的代码。

//

UTF-8
编码的字符串转换为
GB2312
编码格式:

public


static

String utf8Togb2312(String str){

        StringBuffer sb =
new

StringBuffer();

       
for

(
int

i=0; i<str.length(); i++) {

           
char

c = str.charAt(i);

           
switch

(c) {

              
case


'+'
:

                   sb.append(
' '
);

              
break

;

              
case


'%'
:

                  
try

{

                        sb.append((
char

)Integer.parseInt
(

                       
str.substring(i+1,i+3),16));

                   }

                  
catch

(NumberFormatException e) {

                      
throw


new


IllegalArgumentException();

                  }

                  i += 2;

                 
break

;

              
default

:

                  sb.append(c);

                 
break

;

             }

        }

        String result = sb.toString();

        String res=
null

;

       
try

{

            
byte

[] inputBytes = result.getBytes(
"8859_1"
);

            res=
new

String(inputBytes,
"UTF-8"
);

        }

       
catch

(Exception e){}

       
return

res;

  }

//

GB2312
编码格式的字符串转换为
UTF-8
格式的字符串:

public


static

String gb2312ToUtf8(String str) {

        String urlEncode =
""
;

       
try

{

            urlEncode = URLEncoder.encode
(str,

"UTF-8"
);

        }
catch

(UnsupportedEncodingException e) {

            e.printStackTrace();

        }

       
return

urlEncode;

}

当然各种编码之前都可以进行相互的转换,本文只是将最常用的两种字符进行了转换,起到抛砖引玉的作用。后期如果有额外的需求,再对其它字符的转换进行介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息