字符编码乱码问题(servlet底层 编码大揭秘)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了字符编码乱码问题(servlet底层 编码大揭秘),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4097字,纯文字阅读大概需要6分钟。
内容图文
![字符编码乱码问题(servlet底层 编码大揭秘)](/upload/InfoBanner/zyjiaocheng/1277/a9f2fa4ff39a42f0a8e6633aad79bc8d.jpg)
好多初学者会遇到,请求过去的信息内包含中文(一般会是get方式提交过去的请求会出现)。好郁闷,这是为什么呢。有下面分析下,说的不好可以吐槽
话说我们能遇到这种编码的问题,归根结底就是这 这 web开发不是中国人开发的,中国文化博大精深,四大发明渊源流传,可惜,我们太自己为是了,来了个闭关锁国政策,弄得中国跟不上时代的步伐,不潮了,落伍了,互联网时代被西方人抢了个先,发明了,我们只能用别人的了。我们也知道,西方讲的是英语,所以他们采用的编码格式是iso-8895-1。而这 这种编码方式只占两个字节,不适合我们中文(不光是中文,其他的语言也不怎么支持,嘿嘿),所以,为了世界各国的语言都支持,Ken Thompson(有一外国人,where is 中国人),发明了utf-8编码格式,是可变长度字符编码的万能码(又有多少真正被堪称万能的,牛)。其中,中文占3个字节。所以 所以想服务器发送请求的时候,get方式都要转码。
废话不多说,正题例子才霸气。
package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Register extends HttpServlet { @Override protectedvoid doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { process(req, resp); } @Override protectedvoid doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { process(req, resp); } publicvoid process(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html"); String usernmae = req.getParameter("username"); String gender = req.getParameter("gender"); String[] interest = req.getParameterValues("interest"); String address = req.getParameter("address"); String connent = req.getParameter("connent"); usernmae = new String(usernmae.getBytes("iso-8859-1"),"UTF-8");//字符的解码和转码,iso-8859-1代表的2个字节大小,utf-8各个国家中的 gender = new String(gender.getBytes("iso-8859-1"),"UTF-8"); connent = new String(connent.getBytes("iso-8859-1"),"UTF-8"); address = new String(address.getBytes("iso-8859-1"),"UTF-8"); System.out.println(usernmae); System.out.println(gender); System.out.println(interest.length); System.out.println(address); System.out.println(connent); } }
<% @ page language = " java " contentType = " text/html; charset=UTF-8 " pageEncoding = " UTF-8 " %> <! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > < html > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" > < meta content ="" > < title >Insert title here</title><script type="text/javascript">function validate() { var username = document.getElementsByName("username")[0]; if(username.value.length <1) { alert("用户名不能为空"); } var gender = document.getElementsByName("gender"); if(!gender[0].checked &&!gender[1].checked) { alert("请选择性别"); } var interest = document.getElementsByName("interest"); var n =0; for(var i =0; i < interest.length; i++) { if(interest[i].checked) n++; } if(n <1) { alert("兴趣至少选择一个"); } var address = document.getElementsByName("address"); } </script></head><body><form action="Register"> 用户名:<input name="username" type="text"><br> 性别:男<input type="radio" value="男" name="gender"> 女<input type="radio" value="女" name="gender"><br> 兴趣:足球<input type="checkbox" name="interest" value="足球"> 蓝球<input type="checkbox" name="interest" value="篮球"> 羽毛球<input type="checkbox" name="interest"value="羽毛球"> 拍球<input type="checkbox" name="interest" value="排球"> <br> 地址:<select name="address"><option value="上海">上海</option><option value="天津">天津</option><option value="济南">济南</option><option value="德州">德州</option></select><br>说明:<textarea name="connent" rows="15" cols="20"></textarea><br><input type="submit" onclick="validate()" value="充值"> </form></body></html>
usernmae = new String(usernmae.getBytes("iso-8859-1"),"UTF-8");
理解,usernmae.getBytes("iso-8859-1")就是以iso-8859-1的方式得到username。然后新建一个string类型的字符串,将其编码格式定位utf-8,就完活了,简单不,不过,还是那句话,为什么web不是中国人发明的。让老外也尝尝编码的苦楚。
原文:http://www.cnblogs.com/feiguo/p/3762268.html
内容总结
以上是互联网集市为您收集整理的字符编码乱码问题(servlet底层 编码大揭秘)全部内容,希望文章能够帮你解决字符编码乱码问题(servlet底层 编码大揭秘)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。