解决jsp中文乱码问题

 

在jsp中,当使用out.print(request.getParameter("parameter-name"))输出表单数据时,如果表单数据为中文字符时,则输出的内容是乱码。

引起中文乱码的原因是,在默认情况下,提取表单数据使用的编码格式为UTF-8.为了解决中文乱码问题,首先要使用 ISO-8859-1 编码格式将表单数据存储到字节数组中,然后再使用借助 gb2312的编码格式将字节数组转换为字符串。完整的处理表单的程序代码如下:

 

String str = request.getParameter( " parameter-name " );

Byte[] buffer
= str.getByte( " ISO-8859-1 " );

String str1
= new  String(buffer, " GB2312 " );

 

 张孝祥的《Javaweb开发内幕-核心基础》对中文乱码问题有详细的讲解,建议好好看看(另外,孙鑫的Java教学视频也有对乱码的详细讲解)。在该书的p356页,是这么描述的:

【由于getParameter方法将本来是gb2312编码的请求参数值按照iso8859-1字符集编码转换成了一个不正确的unicode字符串,printWriter.println方法再将这个不正确的unicode字符串按照gb2312字符集编码转换成数组输出时 就出现了中文乱码问题。

iso8859-1字符集编码到unicode编码的转换是一种可逆的运算,没有发生信息损失(原理参考孙鑫的Java视频教学),只要将unicode字符串再转换成iso8859-1编码 就可以还原出最初的字节数组。

然后,我们将还原出的初始字节数组按照他本来的字符集编码转换层unicode,就可以得到正确的unicode字符串。然后再将正确的unicode按照一种正确的字符集编码进行输出是,浏览器就可以显示出正确的中文字符了。】

具体的方法可以参考上面的代码

 关键字:解决jsp中文乱码问题 jsp 中文乱码   jsp乱码问题   jsp中文显示乱码   jsp页面乱码
 jsp表单提交乱码   jsp页面显示乱码    中文参数传递乱码   jsp 参数 中文乱码   jsp 传递参数   jsp传递中文参数   jsp传递多个参数
url 中文参数 乱码   jsp 乱码   jsp 中文乱码   jsp乱码问题
  
 

你可能感兴趣的:(java,jsp,浏览器,存储,buffer,byte)