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