您正在使用 IPV4 [52.86.117.142] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会       悟空收录网      

【腾讯云】 爆款2核2G3M云服务器首年 61元,叠加红包再享折上折      
[公益] 地球是我家,绿化靠大家      
2024年 清明节 006
2024年 劳动节 033
2025年 元 旦 278
2025年 春 节 306
综合数码金融娱乐服务报刊政府机构 推荐 排名 今日 申请 友情  
您现在的位置:首页 >> JSP >> 内容
本类新增
本类热门
JSP对URL链接中的中文乱码处理方法总结
内容摘要: IE缺省对URL后面的参数是不编码发送的,但是Tomat缺省是按ISO8859-1来进行URL编码的,因此才会出错。方法一:对URL链接进行二次编码:aonclick='javascript:window.open(encodeURI(encodeURI('./DispatchAction.do?efFormEname=FKRY0001code_type=中......
IE缺省对URL后面的参数是不编码发送的,但是Tomat缺省是按ISO8859-1来进行URL编码的,因此才会出错。

方法一:

对URL链接进行二次编码:

<aonclick="javascript:window.open(encodeURI(encodeURI('./DispatchAction.do?efFormEname=FKRY0001&code_type=中文参数')))">测试</a>

或者单独对参数进行二次编码:

varcode_type="中文参数";

code_type=encodeURI(code_type);

code_type=encodeURI(code_type);

window.open("./DispatchAction.do?efFormEname=FKRY0001&code_type="+code_type);

Service:

Stringcode_type=request.getParameter("code_type");

//这句话一定要写,因为如果不写的话编码就是%E5%A6%88%

code_type=java.net.URLDecoder.decode(code_type,"UTF-8");

有人提出为什么要在客户端对字符串重复编码两次呢?

如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数,比如:需要接收来自不同页面,不地编码的参数内容时。(又或者是开发人员被这有点复杂的东西搞得晕头转向,不懂得如何正确的去做好这接收参数的工作)

这个时候,在客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题。

因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的Ascii字符串。(这里把编第一次的结果叫成[STR_ENC1]好了。[STR_ENC1]是不带有多字节字符的)

再编一次后,提交,接收时容器自动解一次(容器自动解的这一次,不管是按GBK还是UTF-8还是ISO-8859-1都好,都能够正确的得到[STR_ENC1])

然后,再在程序中实现一次decodeURIComponent(Java中通常使用java.net.URLDecoder.decode(***,"UTF-8"))就可以得到想提交的参数的原值。

简单来说,就是Tomcat服务器会自动帮你做一次URLDecode,再加上你自己在Service代码里面写的URLDecode,一共就是两个Decode了。既然要两次Decode,当然就需要两次Encode了。或许你会问,干脆只Encode一次,然后在java代码里不Decode,呵呵,这个也是不行的,这其实也就是为什么要进行两次Encode的原因吧。

方法二:(经测试不支持IE8)

<%@pagecontentType="text/html;charset=gb2312"%>

<ahref="ds.jsp?url=<%=java.net.URLEncoder.encode("编码的是这里","GB2312")%>">点击这里</a>

<%

//request.setCharacterEncoding("GBK");

if(request.getParameter("url")!=null)

{

str=request.getParameter("url");

str=java.net.URLDecoder.decode(str,"GB2312");

str=newString(str.getBytes("ISO-8859-1"));

out.print(str);

}

%>

方法四:

Tomcat中设置server.xml中的Connector熟悉URIEncoding="UTF-8",确保解码格式与编码格式统一。

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:jsp文件绝对路径的设置方法

 

下一篇:处理jsp显示文字过长问题的解决方法

发布日期:2023/4/24
手机扫二维码直达本页
发布时间:13:44:29
点  击:12
录  入:壹家怡园
相关文章
Baidu
YiJiaCMS 7.3.8 build231228(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....