现在的位置: 首页 > 综合 > 正文

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

2013年12月12日 ⁄ 综合 ⁄ 共 1492字 ⁄ 字号 评论关闭

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;

}

当然各种编码之前都可以进行相互的转换,本文只是将最常用的两种字符进行了转换,起到抛砖引玉的作用。后期如果有额外的需求,再对其它字符的转换进行介绍。

抱歉!评论已关闭.