乱码问题

Posted 沉默的羊癫疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乱码问题相关的知识,希望对你有一定的参考价值。

1.xml乱码

首先编写xml文件

<?xml version="1.0" encoding="utf-8" ?>
<计算机>
    <13级5班>
        <李四></李四>
        <小明></小明>
    </13级5班>
</计算机>

发现在浏览器打不开,

 

经check了一下,发现元素命名不能以数字或标点符号或"_"开头。好呗,我错了。

<?xml version="1.0" encoding="utf-8" ?>
<计算机>
    <李四></李四>
    <小明></小明>
</计算机>

对于乱码,其实很好理解,只要你的编码和解码是一致的话,就不会出现乱码问题。

编码是你保存的时候,有选择的,通常喜欢用的是utf-8;

而解码,就是你

首先a.xml里存的是<?xml version="1.0" encoding="utf-8" ?>就是encoding="utf-8",用utf-8解码。

如图所示,在保存以及到浏览器打开的过程图



2.jsp乱码

一个完整的流程图,是jsp->servlet->浏览器,而每一步的编码都需要一致才不乱码,如图所示:

乱码1:
当jsp页面第一次访问到时.jsp翻译引擎jsp文件翻译成Servlet,此时如果不明确指定,
则翻译引擎在读取jsp文件将使用utf-8码表,如果当初存jsp时用的码表和翻译时读取文件实用的码表不同,
则在翻译的过程中会产生乱码。
解决:
在jsp的page指令中有一个属性pageEncoding属性,
用来通知jsp翻译引擎在翻译时以什么样的编码读取jsp文件,
想要解决第一种乱码,只要将pageEncoding值设置成当初保存jsp时使用的编码,
这样存和读取使用的码表相同不会产生乱码。

乱码2:
再翻译过来的Servlet中如果要输出中文到浏览器,因为out相当于response.getWriter,
如果不指定编码服务器发送数据时将字符转为字节时使用iso-8859-1导致乱码,
另外除了控制服务器以什么码表发送以外还要控制浏览器以什么码表打开才能解决乱码
解决:
在jsp的page指令中有一个Content-Type属性,
这个熟属性相当于再翻译过来的Servlet中写上response.setContentType()从而可以解决第二种乱码问题

此外,重要的是,其实在jsp中只要设定过pageEncoding属性,自动就会设置Content-Type属性,总而言之
在myeclipse当中,<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>的

pageEncoding="gbk"有四个作用:

  通知myeclipse以什么样的编码保存当前文件,

  通知翻译引擎以什么样的编码来读取servlet,

  通知servlet以什么样的编码发送给浏览器,

  通知浏览器以什么样的编码打开

 

以上是关于乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

中文乱码问题处理

乱码问题

web.xml配置编码过滤器解决中文乱码问题

Word文件乱码XML

从XML文件乱码问题,探寻其背后的原理

从XML文件乱码问题,探寻其背后的原理