当前位置: 技术问答>java相关
再来讨论一下JAVA中的汉字编码问题
来源: 互联网 发布时间:2015-06-12
本文导语: 曾经花了不少时间看编码(GB,UNICODE)方面的资料。还要问个问题: 我的环境:Window2000, Resin, JDK14, J2EE13 有一个servlet, 名为test, 我POST一个表单,表单中有一个city字段,我在输入框中输入了‘国’, 在那个test(servl...
曾经花了不少时间看编码(GB,UNICODE)方面的资料。还要问个问题:
我的环境:Window2000, Resin, JDK14, J2EE13
有一个servlet, 名为test,
我POST一个表单,表单中有一个city字段,我在输入框中输入了‘国’,
在那个test(servlet中),
String r = request.getParameter("city");
System.out.println(r); //输出乱码
byte[] b = r.getBytes("ISO8859-1");
System.out.println(new String(b)); //输出‘国’,这个char 的值为22269(-71,-6),看来进行默认编码后是一个unicode编码。
System.out.println(new String(b,"GB2312")); //输出‘国’,这个char 的值为22269(-71,-6),看来还是一个unicode编码。那么,这里的GB2312为什么不起作用呢?
我的环境:Window2000, Resin, JDK14, J2EE13
有一个servlet, 名为test,
我POST一个表单,表单中有一个city字段,我在输入框中输入了‘国’,
在那个test(servlet中),
String r = request.getParameter("city");
System.out.println(r); //输出乱码
byte[] b = r.getBytes("ISO8859-1");
System.out.println(new String(b)); //输出‘国’,这个char 的值为22269(-71,-6),看来进行默认编码后是一个unicode编码。
System.out.println(new String(b,"GB2312")); //输出‘国’,这个char 的值为22269(-71,-6),看来还是一个unicode编码。那么,这里的GB2312为什么不起作用呢?
|
new String(bytes)
如果不指定编码形式,他将以缺省形式进行编码
如果你编译的环境设置的是缺省的,那就以你的操作系统的Local为准
所以你在中文的window下
new Sting(new String(b))
和 new String(new String(b),"GB2312")
是一样的
不信你可以到linux下试试
如果不指定编码形式,他将以缺省形式进行编码
如果你编译的环境设置的是缺省的,那就以你的操作系统的Local为准
所以你在中文的window下
new Sting(new String(b))
和 new String(new String(b),"GB2312")
是一样的
不信你可以到linux下试试