原因
计算机中的数据都是以二进制形式存储的,当传输文本时,就会发生字符和字节之间的转换。字符转换为字节的过程叫编码,字节转换成字符的过程叫解码,这两种都要要使用到码表。
常见的码表有ASCLL、UTF-8等。例如,Response使用的码表为 ISO-8859-1。
一些码表
解决
如果两个过程之间使用的码表不一样,就容易出现乱码现象。这种情况有两种解决思路:
1.在编码时设置编码表
2.在解码端设置解码表
在编码时设置编码表
以Response为例,HttpServletResponse接口提供了一个setCharacterEncoding()方法。现在我们常用的码表为"UTF-8",我们将码表从"ISO-8859-1"设置为"UTF-8"即可。
response.setCharacterEncoding("utf-8");
在解码端设置解码表
一般的浏览器也都使用UTF-8编码,可以通过[开发者工具]->[编码]设置使用的码表。