javascript unescape() 在 Java 中使用特殊字符
javascript unescape() in Java with special characters
我在用Javascript escape()方法编码的Java中无法转义特殊字符时遇到问题。
Chrome 控制台:
escape( "Gaëtan" )
"Ga%EBtan"
爪哇端:
(new org.apache.commons.codec.net.URLCodec()).decode("Ga%EBtan", "UTF-8")
Ga�tan
java.net.URLDecoder.decode( "Ga%EBtan", "UTF-8" )
Ga�tan
org.apache.commons.lang3.StringEscapeUtils 中没有一个方法可以解码字符串。
这将要执行的代码与 escape() 方法相结合,因为它已经编写了很长时间。如果不投入大量的工作,我就无法改变它,所以如果我能避免它,我想这样做。
唯一有效的,但这是性能下降:
( new javax.script.ScriptEngineManager() ).getEngineByName("JavaScript").eval( "unescape('Ga%EBtan')" )
Gaëtan
有什么想法吗?:)
问题是 escape() 没有用 UTF-8 编码它,也就是说,由 %EB 编码的字节不是 UTF-8 字符 ë。
在这种情况下,您需要使用 Windows-1252 对其进行解码:
new URLCodec().decode("Ga%EBtan", "Windows-1252");
编辑:这个问题的答案建议在javascript中使用encodeURI和encodeURIComponent,因为escape()的编码似乎是可变的。这两个始终以 UTF-8 编码。
编辑2:这是另一个相关的问题。简而言之,不要使用 escape()。
相关文章:
- javascript替换换行符和特殊字符
- angularjs删除动态形式元素中的特殊字符
- 使用json_encode通过xmlhttp.responseText发送特殊字符(即caron)
- 在搜索中考虑特殊字符的
- 避免键入一些特殊字符
- Regex测试特殊字符
- 在 Javascript 中对特殊字符进行排序 (æ)
- 必须检查长度,并在文本框中允许一些特殊字符
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 用于在Javascript中删除多个空格的特殊字符
- jQuery-Regex以防止任何特殊字符
- javascript正则表达式来识别所有特殊字符
- RegEx只获取特殊字符,前后不获取任何字符
- 如何使用java和javascript进行特殊字符验证
- javascript unescape() 在 Java 中使用特殊字符
- 在Java/JSP中处理的MS-WORD特殊字符
- JQuery&Java servlet:转义特殊字符
- 如何从字符串中删除所有特殊字符,Java脚本
- 将特殊字符从Javascript转换为Java
- 如何在javascript中从Java bean中获取属性值而不替换特殊字符