关于java web项目中文乱码问题
2014-05-20 15:02
465 查看
在开发java web项目时候,存在三种方式与后台交互:
1、form表单提交
2、window.location.href 跳转(这种方式与第一种类似)
3、异步交互
在于后台的交互过程中免不了需要传输中文,前台界面输入中文,后台获取响应参数时候很容易出现中文乱码问题。
下面说明下不同交互方式解决中文乱码的方式,本文java web项目编码以UTF-8为例:
首先,页面的编码方式肯定是要指定的,在jsp中指定界面的编码方式:
<%@ page contentType="text/html; charset=UTF-8"%>
<html>下的<head>标签下加上:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
即使指定了页面的编码方式,在后台获取参数的时候仍会遇到中文乱码问题
其次,js中不同的请求方式,处理中文乱码方式不同:
1、window.location.href 跳转
在js方法中以window.location.href 的方式访问action,请求如下,参数goodsName为中文:
window.location.href = contextRootPath + "/order/getOrderListForExport.action?startDate=" + startDate + "&endDate=" + endDate + "&goodsName" = goodsName;
后台action中以 req.getParameter("goodsName") 获取出的参数就是中文乱码
解决方案:
修改js中的请求参数 goodsName 为 encodeURI(encodeURI(goodsName)) 如下: (注意是encodeURI两次)
window.location.href = contextRootPath + "/order/getOrderListForExport.action?startDate=" + startDate + "&endDate="
+ endDate + "&goodsName=" + encodeURI(encodeURI(goodsName));
后台action获取参数方式
URLDecoder.decode(req.getParameter("goodsName"),
"UTF-8")
2、异步交互
此处只涉及jquery异步交互,cardholderName是中文参数
$.ajax( {
url : contextRootPath + "/payment/XXXXXXXXX.action",
type : 'get',
contentType : "text/text;charset=UTF-8",
cache: false,
data : {cardholderName:cardholderName},
success : function(resp)
{
},
error : function(xhr, status, errorThrown)
{
errorMsg("errorThrown=" + errorThrown);
}
});
后台action获取参数request.getParameter("cardholderName")也是中文乱码
解决方案:
修改js中的请求参数
data : {cardholderName:encodeURIComponent(cardholderName)},
后台action获取参数方式
URLDecoder.decode(request.getParameter("cardholderName"), "UTF-8")
1、form表单提交
2、window.location.href 跳转(这种方式与第一种类似)
3、异步交互
在于后台的交互过程中免不了需要传输中文,前台界面输入中文,后台获取响应参数时候很容易出现中文乱码问题。
下面说明下不同交互方式解决中文乱码的方式,本文java web项目编码以UTF-8为例:
首先,页面的编码方式肯定是要指定的,在jsp中指定界面的编码方式:
<%@ page contentType="text/html; charset=UTF-8"%>
<html>下的<head>标签下加上:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
即使指定了页面的编码方式,在后台获取参数的时候仍会遇到中文乱码问题
其次,js中不同的请求方式,处理中文乱码方式不同:
1、window.location.href 跳转
在js方法中以window.location.href 的方式访问action,请求如下,参数goodsName为中文:
window.location.href = contextRootPath + "/order/getOrderListForExport.action?startDate=" + startDate + "&endDate=" + endDate + "&goodsName" = goodsName;
后台action中以 req.getParameter("goodsName") 获取出的参数就是中文乱码
解决方案:
修改js中的请求参数 goodsName 为 encodeURI(encodeURI(goodsName)) 如下: (注意是encodeURI两次)
window.location.href = contextRootPath + "/order/getOrderListForExport.action?startDate=" + startDate + "&endDate="
+ endDate + "&goodsName=" + encodeURI(encodeURI(goodsName));
后台action获取参数方式
URLDecoder.decode(req.getParameter("goodsName"),
"UTF-8")
2、异步交互
此处只涉及jquery异步交互,cardholderName是中文参数
$.ajax( {
url : contextRootPath + "/payment/XXXXXXXXX.action",
type : 'get',
contentType : "text/text;charset=UTF-8",
cache: false,
data : {cardholderName:cardholderName},
success : function(resp)
{
},
error : function(xhr, status, errorThrown)
{
errorMsg("errorThrown=" + errorThrown);
}
});
后台action获取参数request.getParameter("cardholderName")也是中文乱码
解决方案:
修改js中的请求参数
data : {cardholderName:encodeURIComponent(cardholderName)},
后台action获取参数方式
URLDecoder.decode(request.getParameter("cardholderName"), "UTF-8")
相关文章推荐
- 关于java web中get方法的解决中文乱码问题
- 关于ssh javaweb 项目插入或者更新数据后 mysql 数据乱码的问题
- 关于Java web开发中的中文乱码问题
- 关于web项目中中文乱码问题
- 关于JavaWeb项目乱码的问题
- 关于web项目部署到云平台上get方式进行参数传输是中文乱码的问题
- JavaWeb项目中文乱码问题
- 关于JavaWeb中 Response返回中文乱码的问题
- 关于Java Web中文乱码的问题
- Java Web项目中出现的中文乱码问题
- 关于使用Tomcat搭建的Web项目,出现 URL 中文乱码的问题解析
- 关于java web中中文乱码问题
- 解决web项目开发中常见的中文乱码问题
- 关于Java web开发中文乱码问题的总结
- java web中配置Filter解决jsp中文乱码问题
- Java 关于中文乱码问题的解决方案与经验(转)
- Java 关于中文乱码问题的解决方案与经验 (1)
- Java Web开发中文乱码问题
- Java 关于中文乱码问题的解决方案与经验 (2)
- Java web中servlet中文乱码问题