用get请求传中文,经常搞到乱码,这几天搞搞这个东西,总结一下,以方便以后处理这类的问题。 JAVA代码中的URLEncoder.encode方法和JS的encodeURIComponent功能差不多,它会将处字母和数字,以及*字符外的都编码成%xx形式。 JS的unescape和decodeURI都不能用来解码JAVA中URLEncoder.encode编码的字符串。 在JAVA代码中的URLEncoder.encode的字符串可以在JS中用decodeURIComponent还原成字符串。 在JAVA代码中可以用URLDecoder.decode(request.getParameter("param"),"UTF-8")来将在JS中用encodeURIComponent的参数还原成字符串。 ======================================================== 1、decodeURI()定义和用法: decodeURI() 函数可对 encodeURI() 函数编码过的URI 进行解码。 语法:decodeURI(URIstring) 参数 描述:URIstring 必需。一个字符串,含有要解码的 URI 或其他要解码的文本。 返回值:URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。 2、encodeURI 方法 将文本字符串编码为一个有效的统一资源标识符 (URI)。 encodeURI(URIString) 说明 "/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。 ----------------------------------------------------------------------------------------------------------- 3、decodeURIComponent()定义和用法:decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 语法:decodeURIComponent(URIstring) 参数 描述:URIstring 必需。一个字符串,含有编码 URI 组件或其他要解码的文本。 返回值:URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。 4、encodeURIComponent() 方法: 因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。 ======================================================== 示例代码如下: javascript代码encode
java代码decode
|
|