JSP中文编码问题解决方法详解

 我来答
天罗网17
2022-10-28 · TA获得超过6200个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:73.9万
展开全部

  

   最基本的乱码问题

  这个乱码问题是最简单的乱码问题 一般新会出现 就是页面编码不一致导致的乱码

  Html代码

  <%@ page language= java pageEncoding= UTF %>  <%@ page contentType= text/;charset=iso %>  <>  <head>  <title>中文问题</title>  <meta equiv= Content Type content= text/; charset=UTF >  </head>  </head>  <body>  我是个好人  </body>  </> 

   三个地方的编码

  第一个地方的编码格式为jsp文件的存储格式 Ecljpse会根据这个编码格式保存文件 并编译jsp文件 包括里面的汉字

  第二处编码为解码格式 因为存为UTF 的文件被解码为iso 这样如有中文肯定出乱码 也就是必须一致 而第二处所在的这一行 可以没有 缺省也是使用iso 的编码格式 所以如果没有这一行的话 我是个好人 也会出现乱码 必须一致才可以

  第三处编码为控制浏览器的解码方式 如果前面的解码都一致并且无误的话 这个编码格式没有关系 有的网页出现乱码 就是因为浏览器不能确定使用哪种编码格式 因为页面有时候会嵌入页面 导致浏览器混淆了编码格式 出现了乱码

表单使用Post方式提交后接收到的乱码问题

  这个问题也是一个常见的问题 这个乱码也是tomcat的内部编码格式iso 在捣乱 也就是说post提交时 如果没有设置提交的编码格式 则会以iso 方式进行提交 接受的jsp却以utf 的方式接受 导致乱码 既然这样的原因 下面有几种解决方式 并比较

   a 接受参数时进行编码转换

  

  String str = new String(request getParameter( something ) getBytes( ISO ) utf )

  这样的话 每一个参数都必须这样进行转码 很麻烦 但确实可以拿到汉字

   b 在请求页面上开始处 执行请求的编码代码

  

  request setCharacterEncoding( UTF )

  把提交内容的字符集设为UTF- 这样的话 接受此参数的页面就不必在转码了 直接使用

  

  String str = request getParameter( something )

  即可得到汉字参数 但每页都需要执行这句话 这个方法也就对post提交的有效果 对于get提交和上传文件时的enctype= multipart/form data 是无效的 稍后下面单独对这个两个的乱码情况再进行说明

   c 为了避免每页都要写request setCharacterEncoding( UTF ) 建议使用过滤器对所有jsp进行编码处理 这个网上有很多例子 请大家自己查阅

   表单get提交方式的乱码处理方式

  如果使用get方式提交中文 接受参数的页面也会出现乱码 这个乱码的原因也是tomcat的内部编码格式iso 导致 Tomcat会以get的缺省编码方式iso 对汉字进行编码 编码后追加到url 导致接受页面得到的参数为乱码/

   解决办法

   a 使用上例中的第一种方式 对接受到的字符进行解码 再转码

   b Get走的是url提交 而在进入url之前已经进行了iso 的编码处理 要想影响这个编码则需要在server xml的Connector节点增加useBodyEncodingForURI= true 属性配置 即可控制tomcat对get方式的汉字编码方式 上面这个属性控制get提交也是用request setCharacterEncoding( UTF )所设置的编码格式进行编码 所以自动编码为utf 接受页面正常接受就可以了 但我认为真正的编码过程是 tomcat又要根据

  

  <Connector port= maxThreads= minSpareThreads= maxSpareThreads= enableLookups= false redirectPort= acceptCount= debug= connectionTimeout= useBodyEncodingForURI= true disableUploadTimeout= true URIEncoding= UTF />

lishixinzhi/Article/program/Java/hx/201311/25982

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式