您的位置:首页 > Web前端 > JavaScript

jsp-servelt的乱码问题解决

2016-07-17 16:33 337 查看
一:请求的乱码问题

        对于jsp想servelt传递的表单提交的值时:会出现中文乱码问题

        我们要知道tomcat提交方式有俩种:GET/POST

        jsp中的pageEncoding指的是:jsp编译成servelt的编码格式

       第一种解决乱码:修改tomcat的server.xml的配置文件(不使用,仅作为知识点,平台编码不要改)

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

        1:在dopost方法中:http协议会加上协议   Content-Type =" application/x-www-form-urlencoded”,这样Tomcat才知道这是编码的字符数据

                   第二种解决乱码:

                     我们将请求的编码可以以我们想要的编码解码出来:

                   如中文支持有gbk,utf-8   在设置pageEncoding=“utf-8”时

                  可以通过request.setcharacterEncoding("utf-8");要对应

                  此时在servelt拿到的前台数据将是正确的(中文乱码解决)

                  第三种:通过配置web.xml文件和request.setcharacterEncoding组合(便于用户修改)

       @Override
public void init(ServletConfig config) throws ServletException {
charset = config.getInitParameter("character");
}
req.setCharacterEncoding(charset);

String name = req.getParameter("name");


                                     web.xml配置:
      <init-param>
<param-name>character</param-name>
<param-value>utf-8</param-value>
</init-param>

               第四种方法:
                    由tomcat编码ISO-8859-1,当servelt拿到数据后是这样的编码:中文-----(pageEncoding=“utf-8”)---字节数组------(ISO8859-1)---乱码字符串,必须先用ISO

                     8859-1 重新编码成字节数组在用utf-8解码成字符串。

                  我们的步骤:

                   乱码字符串-----(ISO8859-1)---字节数组------(utf-8)---中文

                   代码:

                   前提:jsp页面的pageEncoding=“utf-8”对应new string(buf,"utf-8")

                  


       2:doget方法(   该方法不能适用所有汉字情况  不建议采用 )   不会有Content-Type协议头

            使用上面的第四种方法(常用post方式)

   

  二:响应的页面乱码格式

         当我们请求的乱码解决时,如果转发界面还存在 乱码。

         是由于HTTP协议的ContentType没有指定编码格式

         这个告诉浏览器以什么编码解析并显示在界面上

          response.setcontentType(“text/html  charset=utf-8”)即可

         response. setcharactEncoding(“utf-8”)也可以设置编码 但是必需有上一句才能实现,可以这样设置:

        response.setcontentType(“text/html);response. setcharactEncoding(“utf-8”)。

        同时有编码时:俩者的值可覆盖(顺序后者生效)。

      注意:

        设置必须在转发页面操作之前

       当没有设置ContentType时, 浏览器有默认的显示编码:火狐gbk。360自动检测(根据你的编码格式)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Tag jsp中文乱码