关于java getBytes()的疑问-编码转换相关

hzy694358 2016-10-25 10:48:41
ss 是gbk编码字符串

request = new String(ss.getBytes("GBK"), "UTF-8");
databyte = request.getBytes();
-----
request =ss;
databyte = request.getBytes("UTF-8");
----------------------------------------------------------
请问这两种方式获取的bytes的区别是什么?
...全文
303 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzy694358 2016-10-31
  • 打赏
  • 举报
回复
引用 2 楼 qq_36427638 的回复:
[quote=引用 1 楼 Sun1956 的回复:] getBytes()指定编码就用指定的编码转换, 不指定就默认是ISO-8859-1转换,跟进这个方法的源码看下就知道了!
字符编码确实很迷惑人,要出题的话,真的是把人晕个死去活来,没啥意思。 但楼上说的并不对,getBytes()和String构造方法未指定字符集是按照当前操作系统的默认字符集操作的。比如我在中国大陆用windows就是GB系列的字符集,要验证这个问题很简单只要执行下面代码即可: byte[]b={(byte)0xcd,(byte)0xf5}; String str=new String(b); String str1=new String(b,"gb2312"); String str2=new String(b,"iso8859-1"); String str3=new String(b,"utf-16be"); 输出,只要看看123哪个跟str一样就可以了。[/quote] 从你的回答中,我还是不明白我提出的问题中两种方式获取的byte是什么区别
qq_36427638 2016-10-28
  • 打赏
  • 举报
回复
引用 1 楼 Sun1956 的回复:
getBytes()指定编码就用指定的编码转换, 不指定就默认是ISO-8859-1转换,跟进这个方法的源码看下就知道了!
字符编码确实很迷惑人,要出题的话,真的是把人晕个死去活来,没啥意思。 但楼上说的并不对,getBytes()和String构造方法未指定字符集是按照当前操作系统的默认字符集操作的。比如我在中国大陆用windows就是GB系列的字符集,要验证这个问题很简单只要执行下面代码即可: byte[]b={(byte)0xcd,(byte)0xf5}; String str=new String(b); String str1=new String(b,"gb2312"); String str2=new String(b,"iso8859-1"); String str3=new String(b,"utf-16be"); 输出,只要看看123哪个跟str一样就可以了。
ps45221 2016-10-28
  • 打赏
  • 举报
回复
getBytes()指定编码就用指定的编码转换, 不指定就默认是ISO-8859-1转换,跟进这个方法的源码看下就知道了!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧