• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > JSP对URL链接中的中文乱码处理方法总结

JSP对URL链接中的中文乱码处理方法总结

作者:观测者 字体:[增加 减小] 来源:互联网 时间:2017-05-11

观测者通过本文主要向大家介绍了jsp url中文乱码,jsp url传值中文乱码,jsp获取url中的参数,jsp获取url,jsp获取url参数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

IE缺省对URL后面的参数是不编码发送的,但是Tomat缺省是按ISO8859-1来进行URL编码的,因此才会出错。

方法一:

对URL链接进行二次编码:

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

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

var code_type = "中文参数";
code_type = encodeURI(code_type); 
code_type = encodeURI(code_type);
window.open("./DispatchAction.do?efFormEname=FKRY0001&code_type="+code_type);
Service:
String code_type = request.getParameter("code_type");
//这句话一定要写,因为如果不写的话编码就是%E5%A6%88%
code_type = java.net.URLDecoder.decode(code_type,"UTF-8");
</div>

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

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

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

因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 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)

http://xxx.do?ptname=中文参数
String strPtname = request.getParameter("ptname");
strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");
</div>

方法三:

<%@ page contentType="text/html;charset=gb2312" %>
<a href="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=new String(str.getBytes("ISO-8859-1"));
out.print(str);
}
%>
</div>

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • jsp中获得路径的两种方法和获得url路径的方法(推荐)
  • JSP对URL链接中的中文乱码处理方法总结
  • jsp中URL传递中文参数的处理方法
  • JSP中js传递和解析URL参数以及中文转码和解码问题

相关文章

  • 2017-05-11初学java常用开发工具介绍
  • 2017-05-11jsp文件操作之读取篇
  • 2017-05-11JSP向后台传递参数的四种方式总结
  • 2017-05-11Java 获取URL的内容
  • 2017-05-11java session出现的错误
  • 2017-05-11jsp使用ECharts动态在地图上标识点
  • 2017-05-11jsp 使用jstl实现翻页实例代码
  • 2017-05-11JSP常见的三个编译指令page、include、taglib
  • 2017-05-11基于JSP HttpServlet的详细介绍
  • 2017-05-11JSP和JSTL获取服务器参数示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jsp网站永久换域名的处理过程
    • 用Java实现FTP服务器解决方案
    • JSP指令元素(page指令/include指令/taglib指令)复习整理
    • 基于JSP的动态网站开发技术
    • java操作mysql入门代码实例(含插入、更新和查询)
    • JSP九大内置对象的作用和用法总结
    • Java学习的捷径
    • jsp+ajax实现无刷新(鼠标离开文本框即验证用户名)实现思路
    • JSP页面的动态包含和静态包含示例及介绍
    • JSP一句话木马代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有