jsp中的getParameter和setContentType

在jsp中,浏览器发送给jsp的字符串都会事先编码成字节。以表单为例,不管是post提交还还是get方法,也不管页面是否有meta元素,表单提交的数据都会以utf-8的编码(仅在IE和火狐测试过)。而jsp的getParameter则会以默认的ISO-8859-1进行解码,因而,在表单提交中文字符串时,jsp这边就会得到乱码。假设表单提交的是”春节”,其utf-8编码是E6 98 A5 E8 BA 82,具体过程可以通过下图表示:

很明显,由于编码和解码的方式不一致,最终jsp这边通过getParameter方法会得到乱码。解决的方式有两种:

1 在调用getParameter方式之前,调用setCharacterEncoding(“utf-8”),设置jsp的request的解码方式,,但是这一种只对post方式有效,由get方式提交的情形,这种方式无效。

2 在调用getParameter方法之后,在进行字符编码转换:

str = new String(str.getBytes(“ISO-8859-1”), “utf-8”); //str为getParameter方法获取的字符串人生伟业的建立 ,不在能知,乃在能行。

jsp中的getParameter和setContentType

相关文章:

你感兴趣的文章:

标签云: