<<<<<<< .mine =======
当前位置: 首页 > SEO > java 乱码问题

java 乱码问题

时间:2012-07-05 12:34:01
1,为什么会出现乱码

乱码的根本原因是字节和字符的问题。

字节由8个bit位表示,最早的编码是ASCII码,ASCII码是单字节的编码字符。因为单字节8个bit位对于中文字符和其他国家的字符来说根本不 够用,需要更多的bit位来表示字符。我们现在常见的编码有GBK,BIG5,GB2312,UTF-8,通过编码映射表可以确定bit位和字符之间的映 射关系。

一个应用从服务端把需要展现的文字换成一段字节流传输给浏览器,浏览器把字节流组装字符展现的过程一般是这样(应用的编码是GBK):

服务端:String text->getBytes("GBK")->byte[] bytes

浏览端:byte[] bytes->new String("bytes","GBK") ->String text

如果字节流处理的转换过程使用编码不一致就会出现乱码问题。

2,常见的乱码现象

a,提交表单的时候出现乱码(页面编码和服务端编码不一致)

页面是jsp的时候,会经常出现的问题,这个比较容易发现和修改,只要改下jsp文件的头就可以了。

<%@ page contentType="text/html;charset=GB2312" language="java"  %>

b,系统之间接口调用出现乱码(如果两个应用的编码格式不一致,get和post方式都是会出现乱码问题的)

系统A调用我们的http接口他们提交过来的数据如果是乱码,主要是因为两个系统的编码格式不一致。我们的应用是GBK,对方的是UTF-8。

解决方法是:

需要他们重新指定下http request的编码格式。

c,和前端交互的时候容易出现乱码(同一个应用get方式)

页面脚本传种中文到后台的时候会出现乱码,而且中文编码是不同的浏览器有各自的实现,后端想用 new String(“乱码”.getBytes(“GBK”),”UTF-8”)这种方式

去还原字符,最后得到是问号。

前端来说最简单的解决方式是用js对页面上传输到后台的中文进行encodeURI编码,传到服务端如果是进行decode。

(tomcat默认会先进行一次decode,所有有时候js会对中文进行2次编码)

另外一种get方式乱码的解决方式是修改容器的encodingURI来实现。

jboss : 修改 /server/default/deploy/jbossweb.sar/server.xml

 











<Connector port="6666" address="${jboss.bind.address}"

  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

  enableLookups="false" redirectPort="8443" acceptCount="100"

  connectionTimeout="20000" disableUploadTimeout="true" <span style="color: #ff0000;">URIEncoding="GBK"</span>/>





tomcat:/conf/server.xml
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"

    redirectPort="8443"

    URIEncoding="UTF-8" />

相关文章

Ubuntu下经验小分享:使用wget来文件

今天在构思使用mysql分布式版本的时候,决定在新的服务器上安装分布式版本的mysql,于是想到就去做了,去了Oracl...

SEO之网站面包屑导航

何为网站的面包屑导航,面包屑导航就是在网页中呈现一个层级形式的栏目,其作用是告知访问者所处网页中的位置及如何返回主目录的...

针对近期百度调整讨论会议小结

近期百度调整非常活跃,把我们搞得很是紧张,还沉浸在6.22和6.28降权事件没有回过神!7.3日,百度K站又继续中......

密封件行业关键字分析

密封件行业关键字分析 密封件产品广泛应用在工业配件方面,其产品种类也很多。何谓“密封”,密封可分为静密封和动密封两...

web前端设计细节之说

设计,不管是平面设计还是web前端设计,都是一个精细的活。 1、图片毛边 在制作图片的时候有时候会碰到图片出...
沪ICP备10034044号-12
400-685-0732
400-685-0732 在线咨询