MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 关于字符编码与解码的几个小问题,希望大家一起讨论

关于字符编码与解码的几个小问题,希望大家一起讨论(6)

www.MyException.Cn  网友分享于:2015-08-27  浏览:29次

------解决方案--------------------

我一般用过滤器解决
------解决方案--------------------

我来顶下
------解决方案--------------------
请解释下这个为什么正常

String temp1 = "汉字";
String temp2 = new String(temp1.getBytes("utf-8"),"gbk"); //乱码
String temp3 = new String(temp2.getBytes("gbk"),"utf-8"); //正常


------解决方案--------------------
mark!
------解决方案--------------------
字符编码一直是很让人头痛的问题
------解决方案--------------------
如果是框架有spring框架的话3楼的是可以我今天就这么做,不过如果没有这框架的话找一个字符编码的类,然后同样在web.xml配置一下过滤器就可以了!
------解决方案--------------------
up,学习
------解决方案--------------------
探讨
引用:

请解释下这个为什么正常

String temp1 = "汉字";
String temp2 = new String(temp1.getBytes("utf-8"),"gbk"); //乱码
String temp3 = new String(temp2.getBytes("gbk"),"utf-8"); //正常


我也解释不了,这个应该跟UTF-8和GBK的编码机制有关,UTF-8对汉字采用3字节编码,GBK采用2字节。
反正你这种情况是正常的,但是反过来就不正常了。。。


------解决方案--------------------
至于楼主的问题,我觉得你开发的东西应该一致,如果你不了解各种开发使用的默认的字符编码,那你就强制的明确指定。
不过我还是觉得上面介绍的过滤器是一种很好的解决方案!
------解决方案--------------------
已经有好的答案哦,你慢慢试一试吧····
鼎······
------解决方案--------------------
MARK!
------解决方案--------------------
帮顶!
------解决方案--------------------

------解决方案--------------------
虽然头有点大,还是学习了
------解决方案--------------------
1.从JSP页面按get或post方式传递参数,到返回结果这个过程中,中文参数会被经过几次字符编码,具体经过哪些编码过程? 

 会经过两次吧..一次是获取传递的参数一次编码过程..还有一次是返回响应页面也要经过一次编码过程

2.JSP页面设置的字符编码会对传递的参数进行编码吗?如JSP页面设置为: 
不会

3.编码的处理是在server.xml的connctor的URIEncoding中指定的
------解决方案--------------------
先顶一下,再过来看
------解决方案--------------------
好帖,顶
------解决方案--------------------
mark
------解决方案--------------------
有人在吗???
------解决方案--------------------
最后还是没个结论,继续讨论!up
------解决方案--------------------
5.如下面代码中,如何再将乱码转换回汉字? 


String s = "中文";
try {
s = new String(s.getBytes("GBK"), "UTF-8");
} catch (UnsupportedEncodingException e3) {
e3.printStackTrace();
}
System.out.println(s);


很可能转不回了,你吧GBK的编码的4个字节当成UTF-8读,读晚之后肯定出错,也就是乱码,但是即使出错程序也强行把那个乱码当成“正常”的字符串存在String里面。如果这个“正常”的字符串的UTF-8的编码和原来那个初试输出的字符串的GBK编码时一样的话(也就是刚才的出错很巧合地没有损失数据),那么再进行一次String(s.getBytes("UTF-8"), "GBK");或许可以成功。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有