我以前采取的解决方式是打开tomcat的server.xml文件,找到区块,加入如下一行:URIEncoding=”utf-8” >
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=”utf-8”/>
这样写是完全可以把问题解决的,但是租服务器的公司不让改动它们的tomcat的任何配置,请问各位怎么办???
注:因为我们要取到get方法提交的url,所以不能换成post方法,请问各位前辈,在不用改tomcat配置和仍热用get方法情况下,是否有其他中文乱码的解决办法,小弟急呀~~
24 个解决方案
#1
<a href="b.jsp?project_id=1&projectName='意见'">审批 </a>
参数传递时候使用&隔开,并且传递字符串时候要使用单引号,不能用双引号。
在接受页面使用
<%=request.getParameter("project_id") %>
<%=new String(request.getParameter("projectName").getBytes("ISO-8859-1"),"GBK")%>
因为projectName是汉字所以要进行编码转换,jsp页面传递的时候是使用的ISO-8859-1。
参数传递时候使用&隔开,并且传递字符串时候要使用单引号,不能用双引号。
在接受页面使用
<%=request.getParameter("project_id") %>
<%=new String(request.getParameter("projectName").getBytes("ISO-8859-1"),"GBK")%>
因为projectName是汉字所以要进行编码转换,jsp页面传递的时候是使用的ISO-8859-1。
#2
学习
#3
也可以用过滤器,或者如果你用Struts框架做的话,重写它核心类的process()方法,,,
#4
晕
到处都是这个问题
Csdn就是为了解决乱码问题而存在的吗?
到处都是这个问题
Csdn就是为了解决乱码问题而存在的吗?
#5
传中文字最好用
URLEncoder.encode(String,"GBK"))
URLDecoder.decode(String,GBK")
URLEncoder.encode(String,"GBK"))
URLDecoder.decode(String,GBK")
#6
或者将你要的参数先转换为json 字符串 再用参数的方式传过去就可以了
#7
你可以在request的时候加上编码,这样就不会有乱码,但每次传都要加
很麻烦,或者如楼上说的,用过滤器
很麻烦,或者如楼上说的,用过滤器
#8
String name= new String(request.getParameter("name").getBytes(
"ISO8859-1"), "GBK");
或
request.setCharacterEncoding("ISO8859-1");
ad=request.getParameter("name");
byte[] temp3 = ad.getBytes("GBK");
String str = new String(temp3);
这样就是中文啦!
"ISO8859-1"), "GBK");
或
request.setCharacterEncoding("ISO8859-1");
ad=request.getParameter("name");
byte[] temp3 = ad.getBytes("GBK");
String str = new String(temp3);
这样就是中文啦!
#9
encodeURI(String)就OK了
<a href="b.jsp?project_id=1&projectName=+encodeURI('意见')">审批 </a>
<a href="b.jsp?project_id=1&projectName=+encodeURI('意见')">审批 </a>
#10
1、在JS里对中文参数进行两次转码
var login_name = document.getElementById("loginname").value;
login_name = encodeURI(login_name);
login_name = encodeURI(login_name);
2、在服务器端对参数进行解码
String loginName = ParamUtil.getString(request, "login_name");
loginName = java.net.URLDecoder.decode(loginName,"UTF-8");
具体请见http://blog.csdn.net/Seven_23/archive/2009/09/02/4510670.aspx
var login_name = document.getElementById("loginname").value;
login_name = encodeURI(login_name);
login_name = encodeURI(login_name);
2、在服务器端对参数进行解码
String loginName = ParamUtil.getString(request, "login_name");
loginName = java.net.URLDecoder.decode(loginName,"UTF-8");
具体请见http://blog.csdn.net/Seven_23/archive/2009/09/02/4510670.aspx
#11
encodeURI(String)
#12
建议楼主数据库和传送的所有页面都设置utf-8,怎样的话有可能不会出错,也可以根据传值来追踪
#13
以下方法仅在TOMCAT服务器上测试成功:
JSP:
var url = "<%=request.getContextPath()%>/TestEncodeAction.do?dispatch=encode¶m=";
url += encodeURIComponent("中文值");
var form = document.forms[0];
form.action = url;
form.submit();
TestEncodeAction.encode
String param = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
System.out.println("param is: " + param);
Console:
param is: 中文值
JSP:
var url = "<%=request.getContextPath()%>/TestEncodeAction.do?dispatch=encode¶m=";
url += encodeURIComponent("中文值");
var form = document.forms[0];
form.action = url;
form.submit();
TestEncodeAction.encode
String param = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
System.out.println("param is: " + param);
Console:
param is: 中文值
#14
我给你个过滤器代码。
上面是一个过滤器,然后再web.xml里面定义
我觉得这个还蛮好用,但是编码格式要统一
package common;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodeFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("utf-8");
arg2.doFilter(arg0, arg1);
arg1.setCharacterEncoding("utf-8");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
上面是一个过滤器,然后再web.xml里面定义
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>common.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我觉得这个还蛮好用,但是编码格式要统一
#15
好久没看到华仔了,顶一个
#16
】
顶,这个应该能解决你的问题
顶,这个应该能解决你的问题
#17
这里有很多热心的IT人员,14数的过滤器可能是很多开发人员所采用的,俺们的项目每个都是套用这种方式,很方便很管用
#18
我也是这样做的.....
#19
可以用的方法以上各楼都说的差不多了,基本上都可以解决你的问题
#20
10楼正解
一般GBK转ISO-8859-1码
在客户端进行2次编码(1次可能依然会有乱码问题)
在服务器进行1次解码
注意的是2端得编码要保持一致,UTF-8或者GBK
一般GBK转ISO-8859-1码
在客户端进行2次编码(1次可能依然会有乱码问题)
在服务器进行1次解码
注意的是2端得编码要保持一致,UTF-8或者GBK
#21
String param = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
#22
很不错学习
#23
用过滤器啊。
#24
搞定!!!!
#1
<a href="b.jsp?project_id=1&projectName='意见'">审批 </a>
参数传递时候使用&隔开,并且传递字符串时候要使用单引号,不能用双引号。
在接受页面使用
<%=request.getParameter("project_id") %>
<%=new String(request.getParameter("projectName").getBytes("ISO-8859-1"),"GBK")%>
因为projectName是汉字所以要进行编码转换,jsp页面传递的时候是使用的ISO-8859-1。
参数传递时候使用&隔开,并且传递字符串时候要使用单引号,不能用双引号。
在接受页面使用
<%=request.getParameter("project_id") %>
<%=new String(request.getParameter("projectName").getBytes("ISO-8859-1"),"GBK")%>
因为projectName是汉字所以要进行编码转换,jsp页面传递的时候是使用的ISO-8859-1。
#2
学习
#3
也可以用过滤器,或者如果你用Struts框架做的话,重写它核心类的process()方法,,,
#4
晕
到处都是这个问题
Csdn就是为了解决乱码问题而存在的吗?
到处都是这个问题
Csdn就是为了解决乱码问题而存在的吗?
#5
传中文字最好用
URLEncoder.encode(String,"GBK"))
URLDecoder.decode(String,GBK")
URLEncoder.encode(String,"GBK"))
URLDecoder.decode(String,GBK")
#6
或者将你要的参数先转换为json 字符串 再用参数的方式传过去就可以了
#7
你可以在request的时候加上编码,这样就不会有乱码,但每次传都要加
很麻烦,或者如楼上说的,用过滤器
很麻烦,或者如楼上说的,用过滤器
#8
String name= new String(request.getParameter("name").getBytes(
"ISO8859-1"), "GBK");
或
request.setCharacterEncoding("ISO8859-1");
ad=request.getParameter("name");
byte[] temp3 = ad.getBytes("GBK");
String str = new String(temp3);
这样就是中文啦!
"ISO8859-1"), "GBK");
或
request.setCharacterEncoding("ISO8859-1");
ad=request.getParameter("name");
byte[] temp3 = ad.getBytes("GBK");
String str = new String(temp3);
这样就是中文啦!
#9
encodeURI(String)就OK了
<a href="b.jsp?project_id=1&projectName=+encodeURI('意见')">审批 </a>
<a href="b.jsp?project_id=1&projectName=+encodeURI('意见')">审批 </a>
#10
1、在JS里对中文参数进行两次转码
var login_name = document.getElementById("loginname").value;
login_name = encodeURI(login_name);
login_name = encodeURI(login_name);
2、在服务器端对参数进行解码
String loginName = ParamUtil.getString(request, "login_name");
loginName = java.net.URLDecoder.decode(loginName,"UTF-8");
具体请见http://blog.csdn.net/Seven_23/archive/2009/09/02/4510670.aspx
var login_name = document.getElementById("loginname").value;
login_name = encodeURI(login_name);
login_name = encodeURI(login_name);
2、在服务器端对参数进行解码
String loginName = ParamUtil.getString(request, "login_name");
loginName = java.net.URLDecoder.decode(loginName,"UTF-8");
具体请见http://blog.csdn.net/Seven_23/archive/2009/09/02/4510670.aspx
#11
encodeURI(String)
#12
建议楼主数据库和传送的所有页面都设置utf-8,怎样的话有可能不会出错,也可以根据传值来追踪
#13
以下方法仅在TOMCAT服务器上测试成功:
JSP:
var url = "<%=request.getContextPath()%>/TestEncodeAction.do?dispatch=encode¶m=";
url += encodeURIComponent("中文值");
var form = document.forms[0];
form.action = url;
form.submit();
TestEncodeAction.encode
String param = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
System.out.println("param is: " + param);
Console:
param is: 中文值
JSP:
var url = "<%=request.getContextPath()%>/TestEncodeAction.do?dispatch=encode¶m=";
url += encodeURIComponent("中文值");
var form = document.forms[0];
form.action = url;
form.submit();
TestEncodeAction.encode
String param = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
System.out.println("param is: " + param);
Console:
param is: 中文值
#14
我给你个过滤器代码。
上面是一个过滤器,然后再web.xml里面定义
我觉得这个还蛮好用,但是编码格式要统一
package common;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodeFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("utf-8");
arg2.doFilter(arg0, arg1);
arg1.setCharacterEncoding("utf-8");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
上面是一个过滤器,然后再web.xml里面定义
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>common.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我觉得这个还蛮好用,但是编码格式要统一
#15
好久没看到华仔了,顶一个
#16
】
顶,这个应该能解决你的问题
顶,这个应该能解决你的问题
#17
这里有很多热心的IT人员,14数的过滤器可能是很多开发人员所采用的,俺们的项目每个都是套用这种方式,很方便很管用
#18
我也是这样做的.....
#19
可以用的方法以上各楼都说的差不多了,基本上都可以解决你的问题
#20
10楼正解
一般GBK转ISO-8859-1码
在客户端进行2次编码(1次可能依然会有乱码问题)
在服务器进行1次解码
注意的是2端得编码要保持一致,UTF-8或者GBK
一般GBK转ISO-8859-1码
在客户端进行2次编码(1次可能依然会有乱码问题)
在服务器进行1次解码
注意的是2端得编码要保持一致,UTF-8或者GBK
#21
String param = new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
#22
很不错学习
#23
用过滤器啊。
#24
搞定!!!!