在介绍编码问题前,先介绍一下java平台(JVM)上的编码转化情况。首先要说明的一点,在JVM中,即java平台上,运行的程序一定都是Unicode编码方式的。对于代码中的字符串常量,根据代码页的设置,转化为Unicode编码。对于输入,在输入进程序中JVM已经把输入的内容根据原先输入的编码方式转化为Unicode。若未指明,则是用系统默认的编码方式去转化为Unicode。对于输出,则是把Unicode编码按指定的编码方式输出,未指明则按系统默认编码输出。
web浏览器发送请求(request)
请求时要对此请求中的参数要进行编码传输
Get方式:浏览器会根据自己的页面的编码格式作为起始编码格式(右击菜单编码有显示的),把字符使用浏览器的编码格式编码成byte字节进行传输。到了tomcat容器,tomcat会使用URIEncoding进行重新编码(解码),如果tomcat没有配置的话,就会默认使用iso-8859-1对byte进行重新解码成字符。
Post方式:浏览器根据自己的页面的编码格式作为起始编码格式(右击菜单编码有显示的),把字符使用浏览器的编码格式编码成byte字节进行传输。到了tomcat容器,如果tomcat没有配置的话,就会默认使用iso-8859-1对byte进行重新解码成字符。
ajax方式:XmlHttpRequest对象的请求方式默认编码是UTF-8 ,当然可以重新设置,通过在Request Headers中设置Content-Type:application/x-www-form-urlencoded; charset=utf-8。为什么ajax和之前的不同呢?因为ajax不是使用默认的浏览器跳转提交方式,而是使用httpreque