Java编程中前后台页面编码不一致问题的解决方法

来源:互联网 发布:福大软件学院 编辑:程序博客网 时间:2024/05/20 06:27

实际上所有的问题都来自编码的不统一:
1、HTTP/POST方式在缺省情况下,采用的是“x-www-form-urlencoded”进行编码,它和JavaScript里面的encodeURI所起的作用是一样的;
2、经过这样编码的内容,到达后台时,其中的字符都是UTF-8编码格式的;
3、如果你的Servlet/JSP指定输出使用的Content-Type是UTF-8,恭喜你,你不需要对这些Parameters进行特别的编码、解码操作,它一定是正常的;
4、否则你需要对这些parameter进行解、编码操作,例如你的页面是GBK编码,那么你需要这么写:
String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK");
采用gb2312编码的也可以采用GBK编码;
5、如果你是在eclipse中进行工作,请注意你的Servlet和JSP文件的属性,其中的编码必须和content-type中设置的一样,否则javac会对你的文件进行错误的编码,这时候的字节码文件本身的字符串就是错误的,输出也不顶用;
6、如果你的程序中需要用到数据库,那么注意从数据库读取的数据的缺省编码,这个就不要说了吧?
7、最后做一个总结:
7.1、servlet/JSP文件本身的编码必须和content-type输出的一致,否则需要加入额外的编码、解码步骤;
7.2、HTTP/POST方式和encodeURI方式传入的编码都是UTF-8的;
7.3、普通的window.open(...),也就是HTTP/GET方式,其传入的编码是和运行script的页面编码一致的;
7.4、后台解码必须通过iso-8859-1进行解码,再使用你的目标编码进行编码;
7.5、所有的问题基本上可以得到解决。 

原创粉丝点击