当前位置: 技术问答>java相关
大侠救命!!中文问题~!!!!
来源: 互联网 发布时间:2015-10-26
本文导语: 各位帮帮忙 怎么将utf-8字符转换成为gbk或者gb2312呢??? 可以帮忙写出一些代码吗??? | public static String Utf8ToUnicode(String s){ try{ if(s==null||s.equals("")) return ""; String newstring=null;...
各位帮帮忙
怎么将utf-8字符转换成为gbk或者gb2312呢???
可以帮忙写出一些代码吗???
怎么将utf-8字符转换成为gbk或者gb2312呢???
可以帮忙写出一些代码吗???
|
public static String Utf8ToUnicode(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("utf-8"),"ISO8859_1");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("utf-8"),"ISO8859_1");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
|
--UTF-8是和Unicode一一对应的,其实现很简单
--
-- 7位的Unicode: 0 _ _ _ _ _ _ _
--11位的Unicode: 1 1 0 _ _ _ _ _ 1 0 _ _ _ _ _ _
--16位的Unicode: 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
--21位的Unicode: 1 1 1 1 0 _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
--大多数情况是只使用到16位以下的Unicode:
--"你"的gb码是:0xC4E3 ,unicode是0x4F60
--我们还是用上面的例子
-- --例1:0xC4E3的二进制:
-- -- 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1
-- -- 由于只有两位我们按照两位的编码来排,但是我们发现这行不通,
-- -- 因为第7位不是0因此,返回"?"
-- --
-- --例2:0x4F60的二进制:
-- -- 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0
-- -- 我们用UTF-8补齐,变成:
-- -- 11100100 10111101 10100000
-- -- E4--BD-- A0
-- -- 于是返回0xE4,0xBD,0xA0
--
-- 7位的Unicode: 0 _ _ _ _ _ _ _
--11位的Unicode: 1 1 0 _ _ _ _ _ 1 0 _ _ _ _ _ _
--16位的Unicode: 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
--21位的Unicode: 1 1 1 1 0 _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
--大多数情况是只使用到16位以下的Unicode:
--"你"的gb码是:0xC4E3 ,unicode是0x4F60
--我们还是用上面的例子
-- --例1:0xC4E3的二进制:
-- -- 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1
-- -- 由于只有两位我们按照两位的编码来排,但是我们发现这行不通,
-- -- 因为第7位不是0因此,返回"?"
-- --
-- --例2:0x4F60的二进制:
-- -- 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0
-- -- 我们用UTF-8补齐,变成:
-- -- 11100100 10111101 10100000
-- -- E4--BD-- A0
-- -- 于是返回0xE4,0xBD,0xA0