最近在项目开发中遇到java.io.CharConversionException:EOF 异常,异常原因是:character decoding failed. Parameter skipped. 即对所传参数时字符编码解析失败。
有时引起的原因可能是:httpServletRequest对象中的键值对中包含:“%”。
java中对字符编码和解码提供了两个类:URLEncoder和URLDecoder,处理这些二进制,使用其加密的结果类似“%CC%DE%%”这样的字符串,因此java.io.CharConversionException:EOF异常的出现就和java的这个机制有关!
因此,最好避免使用含“%”或“%%”字符传入request对象中,解决这种异常可以用URLEncoder 类的encode()方法和URLDecoder类的decode()方法结合起来加解密这种方式来解决。如:
页面中:
var url = "modifyDepartment.action?name=" +cname;
url=encodeURI(url);
服务端获取:
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版本就有。
分享到:
相关推荐
在SpringBoot集成中,我们可以设置消息的超时时间以及重试策略,当消息没有在预设时间内得到确认,服务器会自动重新发送消息,直到消费者确认接收或者达到最大重试次数。 最后,我们提到了RabbitMQ集群。通过创建...
赠送jar包:jetty-io-9.4.43.v20210629.jar; 赠送原API文档:jetty-io-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-io-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-io-9.4.43.v20210629....
在Java编程环境中,"java.security.InvalidKeyException: illegal Key Size" 是一个常见的错误,通常发生在加密或解密操作中。这个错误表示你试图使用的密钥长度超过了Java默认的安全限制。在给定的上下文中,这个...
本次异常的具体描述为:“Communications link failure due to underlying exception: **BEGINNESTED EXCEPTION** java.io.EOFException STACK TRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully...
解决Could not load font file: C:\Windows\FONTS\mstmc.ttf 对应问题贴https://blog.csdn.net/guozhangjie1992/article/details/103679640
### Java异常处理详解 #### 一、异常的基本概念 异常是指程序在运行过程中遇到的一些非预期情况,这些情况可能是由于程序设计不合理、输入数据错误或者是系统资源问题导致的。Java中的异常处理机制是为了让程序...
- **java.io.EOFException**:在输入流到达文件结尾时,尝试读取更多数据时抛出。 - **java.io.FileNotFoundException**:打开或创建指定的文件失败时抛出。 - **java.lang.NumberFormatException**:尝试将字符串...
主要介绍了 AndroidApk混淆编译时,报告Error:Execution failed for task ‘:gviews:transformClassesAndResourcesWithProguardForRelease’.错误解决办法的相关资料,需要的朋友可以参考下
在Java编程中,图片处理...总的来说,理解和使用`ImageIO.read()`需要对Java I/O机制有一定了解,并能处理可能出现的各种异常情况。通过学习源码,开发者可以更深入地理解其工作原理,从而更好地应对实际开发中的挑战。
在批处理编程中,`EXIT` 和 `GOTO :EOF` 是两个经常被用来控制流程的命令,它们各自有特定的用途和效果。理解这两者的区别对于编写有效的批处理脚本至关重要。 首先,我们来看 `EXIT` 命令。在DOS或Windows的批处理...
- **`java.io.EOFException`**:文件已结束异常。 - **`java.io.FileNotFoundException`**:文件未找到异常。 - **`java.lang.NumberFormatException`**:字符串转换为数字异常。 - **`java.sql.SQLException`**...
* java.io.EOFException: Tomcat 启动时报错 + 解决方案:检查 Tomcat 的配置文件是否正确,是否存在语法错误或格式不正确的问题。 * Tomcat 内存溢出 + 解决方案:检查 Tomcat 的 JVM 参数设置,是否存在内存溢出...
javax.mail.AuthenticationFailedException异常处理。
- **`java.io.EOFException`**:当读取文件或流时达到文件末尾但数据还未完全读取完成时抛出。 - **`java.io.FileNotFoundException`**:当尝试打开不存在的文件时抛出。 - **`java.lang.NumberFormatException`**:...
在提供的资源"flowablestudy"中,可能包含了实现以上功能的Java源代码示例,这将帮助读者深入理解Flowable的工作原理和使用方法。通过阅读和实践这些源码,可以更有效地掌握Flowable的流程部署和启动操作,同时也...
Java中的`ZipException`异常通常是由于尝试访问或处理ZIP文件时遇到问题而引发的。当程序尝试打开一个ZIP文件,但文件格式不正确、文件损坏、文件不存在或者没有足够的权限来访问时,就会抛出`java.util.zip....
9. **IOException while loading persisted sessions: java.io.EOFException** 在加载持久化会话时遇到输入/输出异常,可能是文件损坏或读取过程中断。尝试重新初始化持久化存储或检查磁盘空间。 10. **java.io....
EOF(Empirical Orthogonal Functions,经验正交函数)是一种数据降维和模式识别的方法,常用于气候学、海洋学和地球物理学等领域,用于分析多维时间序列数据的内在结构。在MATLAB环境中,我们可以利用EOF分析来提取...
4. 委托授权模式:通过协议银行进行资金管理,确保交易安全,但需付出时间成本,且稳定性不足。 从企业角度分类,主要有第三方担保制度和信用评级制度: 1. 第三方担保制度:如支付宝、安付通等,为交易提供安全...
EOF,全称End of File(文件结束符),在编程领域中通常用来表示文件或数据流的末尾。但在本场景中,"EOF"是“经验正交函数”(Empirical Orthogonal Functions)的缩写,这是一个在气象学、海洋学和其他地球科学领域...