Java字符转义问题
来源:互联网 发布:c语言 beginthreadex 编辑:程序博客网 时间:2024/05/06 04:48
错误案例
图片验证在url包含特殊字符比如”abc%2B”的情况下始终无法通过
错误分析
开始以为是验证码服务器的问题,结果和平台那边联调的时候发现我们传过去的abc%2B 变成了abc%252B,这个当然有问题,我们起初认为了httpclient的版本问题,我们怀疑httpclient可能对输入的url再次转义,后来我在本地测试httpclient2和httpclient3的时候都没发现问题,最终还是发现了程序中的问题
转义之前: abc+
第一次转义:
String sessionID = StringEscapeUtil.escapeURL(random); -> abc%2Babc+ -> abc%2B
第二次转义:
checkCodeCheckURIBroker.addQueryData("sessionID", sessionID);checkCodeCheckURIBroker.addQueryData("code", checkcode.toUpperCase()); // 生成urlurl = checkCodeCheckURIBroker.render();abc%2B -> abc%252B
原来是程序中作了两次转义导致的问题
正确用法
构造url的时候(特别是包含特殊字符)转义或者说编码是必须的,但只需一次。有时候我们应该多少了解某些函数是否将我们的传递的字符进行了转义或者编码,这样可以避免多次调用引起问题。
测试关注点
关于java转义,这是一个很明显的错误,开发人员在开发环境就可以测出来,无需测试人员参与
- Java字符转义问题
- JAVA中的转义字符有关问题
- Java格式化输出 Dom4j转义字符问题
- Java格式化输出 Dom4j转义字符问题
- Java中的特殊字符的转义问题
- oracle转义字符问题
- 转义字符问题
- java转义字符
- java转义字符
- java的转义字符
- Java 特殊字符转义
- Java转义字符
- JAVA中转义字符
- JAVA中转义字符
- java转义字符
- Java的转义字符
- Java转义字符
- Java中的转义字符
- JAVA内存泄漏
- 08年以后,三年了
- AJAX入门及简单代码
- Collection转换为数组时的API使用不当
- How to grow to be a professional developer
- Java字符转义问题
- Best practices when developing
- Jdk中 String类的getBytes方法的编码问题
- Some good books
- Eclipse开发PHP环境配置
- 过滤HTML标签导致死循环
- Graphics User Interfaces
- 日志打印
- 虚通道技术研究