servlet编码问题

输出内容

在Servlet代码中用response的方法来设置输出内容的编码方式,有以下三个方法(转载):

  1、response.setCharacterEncoding("UTF-8");

  2、response.setContentType("text/html;charset=UTF-8");

  3、response.setLocale(new java.util.Locale("zh","CN"));

下面对以上3种方法进行差异分析:

      第一种方法只能用来设置out输出流中所采用的编码,但是它的优先权最高,可以覆盖后面两种方法中的设置;

      第二中方法可以设置out输出流中字符的编码方式,也可以设置浏览器接收到这些字符后以什么编码方式来解码,它的优先权低于第一种方法,  

但高于第三种方法;

      第三种方法只能用来设置out输出流中字符的编码方式,但是它的优先权最低,在已经使用前两种方法中的一个设置了编码方式以后,它就被覆盖而不起作用了。

以上方法都得在getWriter()方法前设置;

输入内容

在Servlet代码中设置取得参数的编码方式(学得):

1.对于doPost()方法,用request.setCharacterEncoding("utf-8")指定取得post的请求参数编码,而对于doGet()方法没有效果。

有一个问题是,如果form表单所在页面与setCharacterEncoding("utf-8")的编码不一样的话,也会出错!

2.对于doGet()方法,就麻烦点,方法如下(假设参数是value):(网上查的,不过如果直接在url上写参数就没成功,求高人指点)

第一种,查看tomcat下conf目录,找到server.xml,如果里面的

<Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443"/>没有编码,则在servlet里用

response.setContentType("text/html;charset=utf-8");

String name=request.getParamenter("name");

name=new String(name.getBytes("ISO-8859-1"),"UTF-8");

这样就可以取得中文参数

第二种,如果server.xml里面的没编码,则添加上编码,然后一定要重启服务器如下

<Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="gb2312"/>

再在doGet()方法里设置输出编码即可response.setContentType("text/html;charset=utf-8")。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值