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");
}
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自动检测(根据你的编码格式)。
对于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自动检测(根据你的编码格式)。
相关文章推荐
- wma tag 批量修改[原代码-从wmfsdk中修改]
- 网站被黑后的处理方法及批量删除恶意代码
- 再谈反向链接,又学了东西
- 大家要经常更新内容啊-针对百度的原创收录速度测试
- jsp 定制标签(Custom Tag)
- DEDECMS TAG伪静态 IIS_rewrite配置方法附rewrite下载
- 个人经验总结:网站被百度“拔毛”如何恢复?
- JSP自定义分页标签TAG全过程
- 网站优化细节之服务器的选择真没见过
- jQuery实现tag便签去重效果的方法
- 3种高效的Tags标签系统数据库设计方案分享
- Javascript让DEDECMS告别手写Tag
- jsp中解决中文乱码问题--表单提交数据
- Tag技术的实现思路
- The Introduction Of Input Tag
- 很难找齐的常识
- 喜讯:富士康宣布员工整体薪资水平提升30%以上
- 交换机端口处理过程
- title
- title