前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >中文乱码问题解决和原理

中文乱码问题解决和原理

作者头像
逝兮诚
发布2019-10-30 12:15:48
8110
发布2019-10-30 12:15:48
举报
文章被收录于专栏:代码人生代码人生代码人生

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/luo4105/article/details/53915233

产生乱码的原因主要是两端编码/解码不一致问题 1.前台页面的编码格式和后台代码的编码格式不一致,现在一般统一使用utf-8这种编码格式 就需要将前台jsp编码指定为utf-8

<%@page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>

后台的接收的编码格式为项目的编码格式,可以在开发工具中将编码格式改为utf-8

2.form表单提交方式为get,或url传参汉字乱码

原因: 在get提交时,参数和数据会以name/value由&分开,url的编码是ASCII码前面加上% 汉字及一些特殊符号无法转成ASCII码,它们会被浏览器转化成iso-8859-1的编码格式 这时有以下解决方式 a.用代码在后台接收时转码一下,将iso-8859-1码的数据转成需要的编码格式(如utf-8)

String param = request.getParameter("zhongwen");
param = new String(param.getBytes("iso8859-1"),"utf-8");

b.将服务器的接收格式修改一下,比如将tomcat的接收格式改为iso8859-1 在server.xml文件中,修改以下代码

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

c.将form表单提交方式变为post方式,即添加method="post"

post提交不乱码的原理

对于POST方式,表单中的参数值对是通过request包发送给服务器,此时浏览器会根据网页的ContentType("text/html; charset=UTF-8")中指定的编码进行对表单中的数据进行编码,然后发给服务器。 由于往往前台编码和后台编码设置一致,所以我们可以在服务器端的程序中我们可以通过request.getParameter(java)获得正确的数据。 参考资料 [1].http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html [2].http://blog.csdn.net/lfsf802/article/details/7232834

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档