解决 JSP 页面中文乱码问题
在传送表单数据库的时候,在所有方法调用之前,加入下面这句:
request.setCharacterEncoding("GBK");
如果还不能解决问题,请继续往下看。
1.
第一步,程序员用编辑工具编写 jsp 文件,然后保存。此时如果不特别指定,一般都是以
平台的默认编码保存的。比如在中文 win2k 上,这个 jsp 文件是以 GBK 编码的。
2 .
web 容器将 jsp 文件编译为 servlet class 文件。编译器需要读取硬盘上的 jsp 文件,那么它以
什么字符集来解码呢?这个过程就像我们编辑一个文本文件,然后保存(是 GBK 编码),
你再用编辑器打开时,编辑器会以 GBK 来解码一样。
不过这里还是复杂一点,jsp 编译器根据什么来确定解码字符集?是么?那么当 2 个页面指
定的
pageEncoding 不同并且用 include 将其合在一起时,jsp 编译器的策略是什么?
3.
浏览器以 get 或 post 方法传递参数时,是以什么编码的?是否 UTF-8?以 get 传递时还要经
过 urlencoding,除此之外和 post 方法还有何不同?看车东的文章 http://www.chedong.com/
tech/hello_unicode.html,get 传递时,是先按 GBK 编码再 urlencoding,我自己试验的结果
也是如此。那么设定浏览器以 UTF-8 发送还有什么作用?另外,如果是这样,那么 web 容
器怎么知道按什么来解码?因为客户端可是多种多样阿,传过来的参数什么编码的都有 ,
web 容器怎么处理?
4.
web 容器得到浏览器传递的参数,以什么字符集解码?若浏览器以 UTF-8 编码,这里只能
是 UTF-8,如果浏览器以平台字符集编码,那么这里 web 容器是怎样成功解码的呢?成功
解码后,将参数写进 request 对象里时又是什么编码?默认 ISO-8859-1?从 request 里取得的
参数是以什么来解码?通过 request.setCharacterEncoding("GB2312")指定?
5.
servlet 从 request 里取得信息,并进行一些操作后,往 response 的输出流里写入信息时又是