当前位置: 代码迷 >> J2EE >> 探讨java工程编码有关问题
  详细解决方案

探讨java工程编码有关问题

热度:1   发布时间:2016-04-17 23:09:23.0
探讨java工程编码问题
一个web项目,有文件的编码格式,还有项目中数据传输的编码格式,文件里面顶部还定义有编码格式(比如encoding,charset等),这三个之间有没有区别和联系?
另请分析一下场景:
场景一:浏览某个jsp页面时乱码了,与上述三种的哪种编码有关系!
场景二:webservice接口传递一个xml字符串,xml的文件头定义的是encoding="UTF-8",但是传递时设置的字符流为GBK,那么怎么解析才不会乱码!

可能提问描述不是很准确,反正就是编码问题
------解决思路----------------------
文本文件始终会使用一套编码,关键就在于使用这个文件的时候所有编码都得和他一致,所以就看使用的地方有哪些了

对于JSP页面,假如本身这个文件存为的是utf-8,可以用<%@ pageEncoding="..." 或者 ContentType="..." 指定编码,他做了什么事呢? 
第一:让web容器用指定的编码对待这个JSP页面已翻译到正确的Servlet.java文件 (申明编码)
第二:设置response.setContentType("text/html;charset=.....");  (申明传输响应给浏览器的响应头编码)
你可以尝试着把pageEncoding写为GBK,这个时候看tomcat中生成的servlet文件,就已经是乱码了,并且他会将响应头也设为GBK
其实还有一个步骤,就是java源文件编译为class字节码时需要指定编码,如果和本地系统环境使用一致的编码是没有什么问题的(比如windows的GBK),如果不同,则必须显式指定源文件编码,至于tomcat等肯定也会有这个步骤的
场景1,和上述每种关系都有关,只要有一个环节编码不正确,就不能正确解析字符
场景2,这个我就不是非常清楚了,我一般都是尽量做到一致编码的,期待高手解答
------解决思路----------------------
我就是来拿分的,不要问为什么.
------解决思路----------------------
楼上+1...