jsp编码问题总结

来源:互联网 发布:常用的特征选择算法 编辑:程序博客网 时间:2024/05/22 00:12


<%@ page language="java" pageEncoding="UTF-8"%>

jsp文件的编码格式,当jsp文件被编译成java文件会用此编码格式解析jsp文件。如果没有设置pageEncoding但设置了contentType的charset,会使用此属性设置的编码格式解析jsp文件,如果两者都没设置会采用默认的ISO8859-1编码。

<%@ page contentType="text/html;charset=UTF-8"%>

服务器端输出到客户端内容的编码格式,通过设置request.setCharacterEncoding("UTF-8")的编码和此编码一致可以解决中文乱码问题。

request.setCharacterEncoding("UTF-8")要放在request使用之前,否则会不起作用。此方法对get方式提交的参数不起作用,设置

server.xml中的URIEncoding可以解决乱码问题。

encodeURI()两次编码

第一次编码,参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)
再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])
然后,再在程序中实现一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder(***, "UTF-8")) 就可以得到想提交的参数的原值。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

可以手动replace(/&/g, "%26").replace(/\+/g, "%2b")转义



0 0