在JSP 页面 中 为什么 request.setCharacterEncoding(“GBK”) 解决乱码 有时候不管用, 必须使用String newdefrayItem = new String(request.getParameter("newdefrayItem").getBytes("iso-8859-1"),"GBK");这样可以。在使用URL进行传递参数时 ,就必须使用String newdefrayItem = new String(request.getParameter("newdefrayItem").getBytes("iso-8859-1"),"GBK");代码如下:<a href="a.jsp?name=张三&sex=男">张三</a>
在获取时 代码如下:
jsp代码:
<%
//request.setCharacterEncoding(“GBK”); 这种方法设置编码时,在这里会产生乱码
//使用以下方式 进行编码,就不会出现乱码,请问这两种 设置编码方式 有什么去区别??
String s=new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");
%>
在获取时 代码如下:
jsp代码:
<%
//request.setCharacterEncoding(“GBK”); 这种方法设置编码时,在这里会产生乱码
//使用以下方式 进行编码,就不会出现乱码,请问这两种 设置编码方式 有什么去区别??
String s=new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");
%>
解决方案 »
- ssh整合的异常
- 如何在控制台编译servlet类
- myeclipse配置struts出现的一个问题
- jxl导出excel时如何根据内容修改某项颜色
- 关于JDBC和ORACLE OCI的问题!! 急用!!!!
- 用JDBC驱动连接数据库com.microsoft.jdbc.sqlserver.SQLServerDriver这个包应放在什么地方(java)????
- 微软sqlserver2000 jdbc驱动中 返回事游标类型怎么表示:
- 页面上Applet为什么就显示一个灰色框?没有任何内容
- ejb当中怎么使用多表查询,由于查询条件不固定,大家都是怎么解决的?谢谢
- 怎样让MODEL的属性循环起来???
- 使用Spring框架开发有关问题
- 本机多IP怎么解决
从你这条语句看
String s=new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");
发送的参数是用ISO-8859-1编码的,这时,你再指定request.setCharacterEncoding(“GBK”),等于是用GBK去解码ISO-8859-1,所以可能会出乱码了.在JSP头部加上 contentType="text/html; charset=GBK"
String s=new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");
可以得到正常的中文.要修改URL传参的编码方式,可以修改tomcat server.xml配置文件, 在Connector结点下,加URIEncoding ="GBK" 试试. 意思是修改所有get方式提交 对参数用GBK编码.
这样不容易出错
乱码问题 一直解决不完呀
请问,在使用URL进行传参时是采用GET提交方式, 如果我要设置通过GET提交的请求信息,在获取请求信息时应该怎么设置编码方式,有时候rquest.setCharacterEncoding("GBK")还想不管用??
如果是tomcat 在Connector结点下 useBodyEncodingForURI="true" URIEncoding="GBK"
如果是apache+tomcat(AJP方式)<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="GBK" />
楼主没明白我说的意思,rquest.setCharacterEncoding("GBK")是对客户端传过来的参数按GBK解码,但客户端是按ISO8859-1编码的。所以中文按ISO8859-1编码肯定就是乱码了。所以要修改get方式传参的编码方式,按GBK编码。方法就是3楼的。
那如果我采用POST提交方式,哪 编码方式是按什么编码啊?是不是按页面的编码??
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>在线等。。在线等。
您看看 我这样理解 对吗?在使用post提交时,按页面编码
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 所以在 在设置post提交方式的编码时,也就是:request.setCharacterEncoding("GBK") 对客户端的请求信息按“GBK”进行解码,这时客户端的请求信息 也是“GBK”编码, 所以解码成功,因为客户端的请求信息是用的“GBK”编码,在设置请求信息的编码时,可以设置成功,因为两个都是GBK的编码方式。同理可得,在使用GET提交时,是按"ISO-8859-1"编码方式
在设置请求信息的编码方式时,如果把"ISO-8859-1"的编码 按"GBK"编码 则肯定会出现编码错误!
这是,必须是使用
String s=new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");
把"ISO-8859-1"的编码 转换为“GBK” 编码!!您看我这样总结的对吗??
因为中文字符无法在URL中明文传输,只能代之以ASCII字符之类的因此将中文字符转化为ASCII字符
String name = new String(chineseCharacters.getBytes("GBK"), "ISO-8859-1");逆过程就是:
String s=new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");