再谈乱码问题
来源:互联网 发布:广电总局手游英文 知乎 编辑:程序博客网 时间:2024/05/21 22:53
乱码问题由来已久。网上也有很多解决方案。但是很多问题都是泛泛而谈。不能解决根本问题。而且很多方案相信写的人都没有试过,只是假想这个方案可以。
见:http://community.csdn.net/Expert/topic/5006/5006422.xml?temp=.1805384
http://yesun.cnblogs.com/archive/2006/06/20/430693.aspx
比如: tomcat5.5, jdk1.5,ie6.0下, server.xml配置如下:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8" />
有一个test.jsp, 编码和保存方式均为:UTF-8,过滤器也设置成UTF-8
<form action="test.jsp" method="post">
输入中文:<input type="text" name="q"><input type="submit" value="确定">
<br/><a href="javascript:getM();">通过get方式提交</a>
</form>
</BODY>
</HTML>
<script language="javascript" >
function getM()
{
window.open('test.jsp?a=<%= java.net.URLEncoder.encode("你","UTF-8")%>&a1=<%= java.net.URLEncoder.encode("你")%>&q='+escape(document.all.q.value)+"&q1="+document.all.q.value+"&q2="+encodeURI(document.all.q.value),"_self");
}
这是,如果再输入框内输入“你”这个字,提交时时乱码(经我测试,输入奇数个汉字,最后一个总是乱码),再浏览器窗口直接输入“你”,也是乱码。 而如果,采用firefox,一切正常,或者在ie6.0下,全部用gbk编码,则一切正常。
测试得知: “你”的UTF-8编码: E4 BD A0, GBK编码:C4 E3, UNICODE编码 4F60
在所有都设置成UTF-8的情况下:通过输入框输入“你”,则提交到服务器上的byte是: E4 BD,最后一个AO被IE给无缘无故的截去了。 而如果通过浏览器地址栏输入“你”,则实际提交的是 GBK编码: C4 E3。java.net.URLEncoder.encode默认是按照 系统编码,而不是你的文件的编码。 escape是安装unicode编码,encodeURI是安装UTF-8编码。
所以到此时,乱码原因已经全部找到。解决起来就容易了。
- 再谈乱码问题
- 再谈乱码问题,如何解决MYSQL数据中文乱码问题
- 再谈乱码问题,如何解决MYSQL数据中文乱码问题
- 再谈乱码问题,如何解决MYSQL数据中文乱码问题
- 谈乱码问题,如何解决MYSQL数据中文乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- 乱码问题
- C# 特性(Attribute)入门
- 在JSP中访问Oracle ,SqlServer ,DB2, Informix ,Access 数据库
- 使用HttpWebRequest自动更新客户端应用程序
- 枚举转化与判断
- 按位逻辑运算(JAVA)
- 再谈乱码问题
- isql 实用工具
- 中搜锁定个人桌面门户,扬言有可能超越百度
- Oracle OCI方式配置连接池不成功
- 压力测试和性能测试的区别
- JPEG颜色转换实现文件
- yyr
- JPEG简易文档
- 第十周--星期五