Web中的请求参数的传递---编码

需要知道的:
大多数浏览器的编码格式是:ISO-8859-1,
大多数容器的默认编码处理也是: ISO-8859-1,
ISO-8859-1为一个字节,范围0-255,是不支持中文的。
请求方式又分GET和POST。

所以,当请求参数中含有中文字符时,容器若是依旧按照 ISO-8859-1格式进行解码将会获得错误的参数,那么如何解码以获得正确参数?【按照请求方式分两种方法进行讲解】。

一.POST
POST的请求参数是放在请求体中的。
可以在servlet中设置setCharacterEncoding 为 utf-8,就算请求参数中有中文及其他字符,也能正确解码。

注意:
1.必须要在获取参数getParameter方法使用之前进行设置,否则,将失效。因为使用 getParameter之后,参数就完全按照 ISO-8859-1解码了,再调用 setCharacterEncoding  毫无意义。
2.GET方法设置 setCharacterEncoding不能解决问题。
3.utf兼容 ISO-8859-1,所以也能处理英文。


二.GET
前面说了,G ET方法设置 setCharacterEncoding并 不能解决问题。原因在于,GET方式的请求参数是存在与URL中的,而处理URL并不是web容器,而是HTTP服务器,简言之,GET方式的请求参数传递给web容器的时候,其中的参数就已经完全解码了,能做的只是转换一下编码格式。

可以再servlet中这样做。
String name=request.getParameter("name");
name=new String(name.getBytes(" ISO-8859-1"),"utf-8");
这样就相当于将参数按照utf-8格式进行转换了。

说明:
1.这方法对于POST也可以,但何必呢?
2. name.getBytes(" ISO-8859-1"):是将name字符串按照 ISO-8859-1 格式转换成Byte数组。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值