servlet处理get请求时的中文乱码问题

在我们java Web开发中,使用servlet处理get请求时,倘若get请求中携带了中文格式的参数,直接传给后台会出现乱码。

比较直观的解决方式如下:

String name= request.getParameter("name")  //定义一个变量装载前台传来的参数

如果直接打印这个name,可以发现会出现乱码。

//处理乱码
name = new String(name.getBytes("ISO8859-1"),"UTF-8");
再打印name看看吧!


拓展:

每次中文参数都要处理会比较麻烦,我们可以使用过滤器:

public String getParameter(String name) {
	String val = super.getParameter(name);
	if (value == null)
		return null;
	String method = request.getMethod();
	if ("get".equalsIgnoreCase(method)) {
		try {
			val = new String(val.getBytes("ISO8859-1"),"UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}
	return value;
}


乱码原因:

在tomcat安装目录下的conf/server.xml中,有这样的配置(在这里面可以更改tomact的默认端口号):

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
其中有关编码集属性的是,URIEncoding属性。该属性决定了使用get请求通过浏览器地址栏访问tomcat时的编码方式(默认为ISO8859-1)。
所以我们直接更改URIEcoding值为 “UTF-8” 也可解决乱码问题。


tomcat那些事:

从tomcat 8.0开始,URIEcoding 的默认值不再是ISO9588-1,而变成了 UTF-8.所以从toncat 7.x移植到 8.x可能要删减处理乱码问题的代码模块。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值