String.getBytes()方法是否可逆?

羊城咩咩咩 2007-08-02 11:21:38
我在Tomcat下有2个用来测试编码的jsp:encode1.jsp,encode2.jsp
encode1:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<Script>
function sendGB2312(){
var oReq = new ActiveXObject("Microsoft.XMLHTTP");
var proxyURL = "encode2.jsp?name=测试";
oReq.open("POST", proxyURL, false);
oReq.send(null);
}
</Script>
</HEAD>

<BODY onload="sendGB2312()">

</BODY>
</HTML>

encode2.jsp:
<%
String name = (String)request.getParameter("name");
System.out.println(name+":1");
name = new String(name.getBytes("ISO-8859-1"),"GB2312");
System.out.println(name+":2");
name = new String(name.getBytes("GB2312"),"UTF-8");
System.out.println(name+":3");
name = new String(name.getBytes("UTF-8"),"GB2312");
System.out.println(name+":4");
%>


访问encode1.jsp的时候,后台打印出的结果如下:
????:1
测试:2
????:3
锟斤拷锟斤拷:4

想问一下,第3,4步是不是不可逆的?谢谢!
...全文
402 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
羊城咩咩咩 2007-08-04
  • 打赏
  • 举报
回复
谢谢大家!
晨星 2007-08-02
  • 打赏
  • 举报
回复
同意楼上。
楼主的问题跟编码方式有关,只要两种编码方式对某一字符存在一个唯一映射,就是可逆的。
flyforlove 2007-08-02
  • 打赏
  • 举报
回复
只要双方编码都包含的字符,是可逆的。
dreamover 2007-08-02
  • 打赏
  • 举报
回复
确实是不可逆的,因为有的转换有可能丢失信息
storm_huang 2007-08-02
  • 打赏
  • 举报
回复
name原来是ISO-8859-1编码的,你3、4你getBytes的编码方式错了,转换肯定出错。
1错是你没有设置页面的编码格式默认是GB2312,显示处理是乱码。
可不可逆是两种编码之间的转换,而不是一种ISO-8859-1的你按utf-8变成字节数组,然后转换成gbk,这个肯定会错。英文可能不会错,但是中文他们的编码方式不同不能这样转换
piaopiao11 2007-08-02
  • 打赏
  • 举报
回复
String test="速度";
String s= new String(test.getBytes("utf-8"),"gbk");
String s1= new String(s.getBytes("gbk"),"utf-8");
System.out.println(s1);

这样转就不会乱码,但被转的字数必须是偶数个否则最后个乱码
piaopiao11 2007-08-02
  • 打赏
  • 举报
回复
这个属于编码方式的问题了,gb2312是两个字节的,utf-8好像是2-3个字节的把,不固定
这样转容易丢失信息
wuzeng2002 2007-08-02
  • 打赏
  • 举报
回复
从你的测试结果来看 他们是不可逆的 呵呵~

81,122

社区成员

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

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