Servlet(5)中文乱码j解决方案

23 篇文章 0 订阅
9 篇文章 0 订阅

【1 post请求】

【问题】html网页中post请求Servlet处理,在控制台上打印出来的是中文乱码

需要在Servlet中的(doGET)方法内添加:

request.setCharacterEncoding("UTF-8");

即可解决

【2 get请求】

加入上边的代码,只可以解决post请求方式中的中文乱码!

【问题】把html中请求改为get方式,控制台上依然打印的是中文乱码

【方法1】修改tomcat编码集

【步骤】打开tomcat中conf目录下的server.xml:找到8080端口所在的那行记录,添加一个utf-8的编码集即可【URIEncoding="utf-8"】

原来的代码改为(注意对比原来的):

    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8" />

保存,重启Servlet项目 再次访问html即可发现,控制台的中文乱码已经解决

【方法2】重新编解码

1 第一种】

修改代码

		String username = request.getParameter("username");
		// 将数据使用iso8859-1编译回去
		byte[] bytes = username.getBytes("iso8859-1");
		// 重新使用utf-8字符集将数据组合成字符串
		String newUsername = new String(bytes, "utf-8");
		System.out.println(newUsername);

【但是】这样仅仅对username这个做了编码重新编译,而未编译的其他参数,仍然会产生中文乱码现象

2 第二种】使用java提供的工具类

修改代码:

【注意导包为】

import java.net.URLDecoder;
import java.net.URLEncoder;


		String username = request.getParameter("username");
		String encodeusername = URLEncoder.encode(username, "iso8859-1");
		// 再次使用utf-8对字符串进行解析
		String decodeusername = URLDecoder.decode(encodeusername, "utf-8");
		System.out.println(decodeusername);

【但是同样】这样仅仅对username这个做了编码重新编译,而未编译的其他参数,仍然会产生中文乱码现象




【3 Servlet处理转到浏览器中文乱码】

在Servlet中添加如下代码!(意思是通知浏览器使用utf-8格式解析此Servlet响应)

response.setCharacterEncoding("UTF-8");



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值