之前在项目中用到ajax的时候,面临一个请求带有中文参数的乱码问题,查询了很多资料,最后得以解决,代码如下:
Js中:
// companyName
url=url+"&companyName="+companyName;
//将请求地址进行编码
/*
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
*/
url = encodeURI(url);
url = encodeURI(url);
Action中:
String companyName =request.getParameter("companyName");
if(companyName!=null)
{
/** JDK1.5API
HTML 格式解码的实用工具类。该类包含了将 String 从 application/x-www-form-urlencoded
MIME 格式解码的静态方法。
该转换过程正好与 URLEncoder 类使用的过程相反。假定已编码的字符串中的所有字符为下列之一:"a
" 到 "z
"、"A
" 到 "Z
"、"0
" 到 "9
" 和 "-
"、"_
"、".
" 以及 "*
"。允许有 "%
" 字符,但是将它解释为特殊转义序列的开始。
转换中使用以下规则:
- 字母数字字符 "
a
" 到 "z
"、"A
" 到 "Z
" 和 "0
" 到 "9
" 保持不变。 - 特殊字符 "
.
"、"-
"、"*
" 和 "_
" 保持不变。 - 加号 "
+
" 转换为空格字符 " - 将把 "
%xy
" 格式序列视为一个字节,其中 xy 为 8 位的两位十六进制表示形式。然后,所有连续包含一个或多个这些字节序列的子字符串,将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制,或者如果未指定的话,则使用平台的默认编码机制。 - */
companyName = java.net.URLDecoder.decode(companyName,"UTF-8");
}
第一次写博客 如有纰漏,望各位指教。