`

jsp 中文传递乱码

jsp 
阅读更多
总结:1. 在jsp中<%@ page contentType="text/html; charset=A" %>如果指定了,那么在改jsp中所有构造的String(不是引用),如果没有指定编码,那么这些String的编码是A的。从request的得到的String如果没有指定request的编码的话,他是iso-8859-1的从别的地方得到的String是使用原来初始的编码的,比如从数据库得到String,如果数据库的编码是B,那么该String的编码是B而不是A的,也不是系统默认的。此时,如果要输出的String的编码不是A,那么,很可能显示乱码的,所以首先要将String正确转化为编码A的String,然后输出。2. 在jsp中<%@ page contentType="text/html; charset=A" %>没有指定,那么相当于指定了<%@ page contentType="text/html; charset=ISO-8859-1" %>3. Servelte中如果执行了像 response.setContentType("text/html;charset=A");说明将response的字符输出流编码设置为A,所有要输出的String的编码要转化为A的,否则会得到乱码的。Servelet中从request得到的String的编码和jsp中一样的,但是在servlet java文件中构造的String是使用的系统默认的编码的。在servelt中从外部得到的String 是使用原来的编码的,比如从编码为B的数据库得到的数据是编码为B的,不是A,也不是系统默认的编码。

url传递中文时转码:
方法1: 前台转码:encodeURI(username)
       后台解码:URLDecoder.decode(username, "UTF-8");
方法二:前台不转码 后台重新构造:String username1 =new String(username.getBytes("ISO8859_1"),"gb2312");
0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics