java web 中文乱码全处理

本文分析了中文乱码产生的原因,并介绍了如何通过设置浏览器编码和JSP页面指令来控制表单数据的发送编码。此外,还提供了GET和POST请求下的具体解码方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在javaweb开发中,稍有不慎即会出现中文的乱码问题,好不头痛!我们首先分析一下乱码的机理:

(1)文字在计算机中全部以二进行形式进行存储,比如:‘a’的存储形式为:01100001,常见的字母数字标点符号已由ANSI进行标准化编码,即基本上不存在不同编码的问题。

(2)但汉字不同如“爱”在国标码(GB)下的编码形式:“1010100010101110”,但在UTF-8下则为“111001111000100010110001”,这样如果发送方以一种编码形式发送,接收方以另一种方式来解释,就必然会产生乱码的现象了!

2、浏览器中表单中的“中文”是以何种编码发送呢?,取决于浏览器的设置,如下图:

144226587.png

3、此设置是什么来决定的呢?,它是由JSP页面的如下代码来决定的:

1
<%@ page contentType="text/html; charset=UTF-8" %>

即表单的数据发送编码,可以由程序来控制!!!

4、我们控制了发送的编码,但我们如何能接收时来指定解码方案呢?这根据get和post请求有两种不同的方法:

(1)如果get请求,请使用如下:

1
2
3
4
5
6
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uname=request.getParameter( "uname" );
//用UTF-8指定解码方案,对接收的uname进行解码
uname= new String(uname.getBytes( "ISO-8859-1" ), "UTF-8" );
}

(2)如果是post请求,请使用如下:

1
2
3
4
5
6
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//在request接收数据之前,指定其解码方案
request.setCharacterEncoding( "UTF-8" );
String uname=request.getParameter( "uname" );
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值