`
小古墓
  • 浏览: 59351 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论
阅读更多

今天在做项目的时候,要在js中拼SQL语句,然后传到后台查询。不可避免,SQL中存在“%”。结果到后台之后,报“java.io.CharConversionException:EOF异常”上网查资料得知,即对所传参数时字符编码解析失败。 有时引起的原因可能是:httpServletRequest对象中的键值对中包含:“%”。  java中对字符编码和解码提供了两个类:URLEncoder和URLDecoder,处理这些二进制,使用其加密的结果类似“%CC%DE%%”这样的字符串,因此java.io.CharConversionException:EOF异常的出现就和java的这个机制有关! 

       因此,最好避免使用含“%”或“%%”字符传入request对象中,解决这种异常可以用URLEncoder 类的encode()方法和URLDecoder类的decode()方法结合起来加解密这种方式来解决。如: 
页面中: 

Js代码  
var url = "modifyDepartment.action?name=" +cname;  
url=encodeURI(url);   


服务端获取: 

Java代码  
String name=request.getParameter("name");  
name = java.net.URLDecoder.decode(name,"UTF-8");  

     javascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 

     escape() 方法:  

     采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。 

     不会被此方法编码的字符: @ * / + 

     encodeURI() 方法: 

     把URI字符串采用UTF-8编码格式转化成escape格式的字符串。 

     不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ' 

     encodeURIComponent() 方法: 

     把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。 

     不会被此方法编码的字符:! * ( ) ' 

     因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。 

     另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

 

解决方案:在js传参数的时候,先不用带有“%”,随便找个字符串代替。到后台之后,再用replaceAll替换。哈哈、好猥琐的一个方法,不过真管用。sql = java.net.URLDecoder.decode(sql.replaceAll("%", "%25"),"UTF-8"); 

 
分享到:
评论

相关推荐

    JSP中js传递和解析URL参数以及中文转码和解码问题.docx

    本文将详细介绍如何在JSP页面中利用JavaScript进行URL参数的传递和解析,并解决中文字符的编码与解码问题。 #### 二、URL参数传递 在JSP中,通常使用JavaScript来动态构建URL并传递参数。以下是一个典型的例子: ...

    Silverlight页面跳转及页面间传递参数

    以下将详细介绍Silverlight中的页面跳转机制以及如何在页面之间传递参数。 1. **Silverlight页面结构** Silverlight应用程序通常由多个用户界面(UI)元素组成,这些元素可以通过不同的导航控件(如Frame或...

    html页面跳转传递参数Demo

    在网页中,传递参数有两种常见方式:GET和POST。GET方式将参数附加在URL后面,可见且有长度限制;POST方式则将参数隐藏在HTTP请求的主体部分,安全且能传递大量数据。在这个Demo中,我们主要关注的是GET方式。 五、...

    通过URL跨页面传递参数

    这段代码使用了`LinkButton`控件和`GridView`控件结合的方式来动态生成带有参数的链接,并且在服务器端处理这些参数。 ##### 2.1 `LinkButton`控件的使用 `LinkButton`控件是一个用于创建链接样式的按钮控件。在本...

    页面弹出窗体且带参数

    在IT领域,尤其是在Web开发中,页面弹出窗体并携带参数是一种常见的功能需求,它不仅增强了用户体验,还提高了应用程序的交互性和功能性。本文将详细解析如何实现这一功能,包括其背后的逻辑、代码示例以及可能遇到...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的问题:即通过Ajax发送带有中文字符的数据时,后端接收到的数据出现乱码现象。...

    asp.net 页面间参数传递

    在ASP.NET中,页面间参数传递是Web应用程序中常见的需求,用于在多个页面之间共享数据。这通常是通过URL查询字符串、隐藏字段、视图状态、Session、Cookie、Application或者使用服务器端控件的属性来实现的。下面...

    html、htm后带参数的代码

    HTML5引入了`<form>`元素的`action`属性,可以设置为带有参数的URL,配合`<input>`元素,用户填写表单后,点击提交按钮会将这些参数发送到指定的URL。同时,`<a>`标签的`href`属性也可以携带参数,通过点击链接触发...

    jquery.params.js页面带参数跳转插件

    2. **动态URL构建**:当你完成了参数的设置后,可以使用 `$.params.toUrl()` 方法将当前的参数集合并入到URL中,形成一个带有完整参数的跳转链接。 3. **页面跳转**:在设置了需要的参数后,可以直接调用 `$.params...

    uni-app如何页面传参数的几种方法总结

    本文将详细介绍uni-app页面传参数的几种方法,特别关注`uni.$emit()`和`uni.$on()`的使用,以及它们在实际开发中的应用场景。 首先,`uni.$emit(eventName, OBJECT)`是用来触发全局的自定义事件。你可以向事件中...

    C# web简单的带参数跳转

    在C# Web开发中,我们经常需要在不同的页面之间传递数据,这通常通过URL参数、视图模型或者Session来实现。本篇文章将聚焦于“C# Web简单的带参数跳转”,探讨如何使用URL参数来进行页面间的数据传递。 一、URL参数...

    JSP父页面传参数到子页面及接收示例

    请求成功后,通过`success`回调函数处理返回数据,创建URL参数字符串`params`,并将此参数拼接到子页面地址后,通过`src`属性将iframe标签的源地址设置为带有参数的URL。 2. 子页面接受父页面的参数 当子页面接收到...

    ASP.NET 中实现页面间的参数传递

    1. 在源页面的代码中构造带有参数的URL地址,如`"destinationWebForm.aspx?Name1=John&Age=30"`。 2. 使用`Response.Redirect()`方法重定向至上述URL。 3. 在目标页面使用`Request.QueryString`集合获取URL中的参数...

    iframe下页面传参数为乱码问题探讨

    遇到了变态很不常见的参数乱码的问题 首先看下页面 如图,月度指标下面也有同样的三个radio。 三个radio 下面是一个iframe,实现效果是,点击不同的radio显示不同的页面, 点击的时候传递带参数的网页地址。 (1)...

    带参数的用户控件设计

    在本主题中,我们将深入探讨如何设计一个带参数的用户控件,并将其应用于DataList中,同时处理跨界面传值的问题。 首先,让我们了解什么是DataList。DataList是ASP.NET中的一种数据绑定控件,它提供了一种灵活的...

    静态页面html中跳转传值的JS处理技巧

    用户在点击链接后,浏览器会将带有查询参数的URL传递到服务器,服务器随后可以解析这些参数,以获取传递的值。 在目标页面index2.html中,为了接收并解析这些参数,我们需要编写JavaScript代码来提取URL中的查询...

    nginx中带问号(?) 带参数的rewrite规则

    以下将详细介绍如何在Nginx中处理带参数的`rewrite`规则,以及如何去除或保留这些参数。 首先,`$query_string`变量包含了GET请求中的所有参数,而`$request_uri`则包含了原始URI,包括路径和查询字符串,但不包含...

    ECSHOP 301重定向带动态页面跳转到静态页面插件

    3. **URL规则**:定义清晰的重定向规则,比如商品详情页、分类页等,确保所有动态页面都有对应的静态页面可以跳转到。 4. **测试**:在正式部署前,应使用工具或手动检查各个动态URL是否成功重定向到静态页面,确保...

    路由技术解决页面跳转问题

    在网站有很多需要跳转的页面,而我们又需要动态地在主页面中加载子页面时,就会用到这门技术。以我们公司现在这个项目为例,前台是由FLEX实现,整个系统可能只有几个application组成,所有的功能点均由module实现,...

Global site tag (gtag.js) - Google Analytics