当前位置: 首页 > 面试题库 >

Java和JS / AS3之间URL解码/编码UTF-8的差异(错误!?)

牟慎之
2023-03-14
问题内容

我遇到了一个问题,URL解码了用Javascript或Actionscript 3编码的Java中的UTF-8字符串。我设置了一个测试用例,如下所示:

有问题的字符串是Produktgröße

当我使用JS / AS3编码时,我得到以下字符串:

escape('Produktgröße')

产品%F6%DFe

当我用JS取消转义时,我没有任何改变

unescape('Produktgr%F6%DFe')

产品%F6%DFe

因此,据此,我认为JS无法正确编码字符串?

以下JSP产生此异常

<%@page import="java.net.URLEncoder"%>
<%@page import="java.net.URLDecoder"%>
<%=(URLDecoder.decode("Produktgr%F6%DFe","UTF-8"))%><br/>
<%=(URLEncoder.encode("Produktgröße","UTF-8"))%><br/>
<%=(URLEncoder.encode("Produktgröße"))%><br/>
<%=(URLDecoder.decode(URLEncoder.encode("Produktgröße")))%><br/>
<%=(URLDecoder.decode(URLEncoder.encode("Produktgröße"),"UTF-8"))%><br/>

产品

产品%C3%B6%C3%9Fe

产品%C3%B6%C3%9Fe

产品展示

产品展示

知道为什么我与语言之间存在这种差异以及为什么JS / AS3表现不佳吗?

谢谢。


问题答案:

转义 是不建议使用的函数,不能正确编码Unicode字符。使用
encodeURI


encodeURIComponent

,后者可能是最适合您需要的方法。



 类似资料:
  • 我在将文本从UTF-8编码转换为UTF-8编码时遇到问题。这里有字节数组, 我正在将其转换为UTF-8字符串并返回字节数组, 据我所知,这是一个3字节的数组。正当但这是我得到的。 这是什么原因?据我所知,在UTF-8 Specials中,2391189组合被称为替换字符。 这也是一个更大问题的一部分。

  • 作为Python的新手,我已经花了很多时间。 我怎么能解码这样的URL: 到python 2.7中的这个: 返回的内容非常难看。 仍然没有解决办法,任何帮助都是感激的。

  • 我编程了一个Android应用程序,它管理要在MySQL数据库中存储和删除的数据(在服务器上)。每当在智能手机上使用特殊字符("ä","ü",...)时,符号转换不良。 在日志中,我可以看到“Umlaut”(例如“ä”)正确传输。我还在我的php文件中使用“SET NAMES‘UTF-8’”,请参见此处: 如果我通过Postman启动请求,我可以添加带有特殊字符的单词,例如“TÄST”,json响

  • null 在一个案例中,我还意识到,如果我从Git diff复制原始值,并用它替换Eclipse中错误的值,那么我在消息属性文件中就有了正确的umlauts。

  • 这两种方法:和有什么区别? 请举例说明。

  • 问题内容: 目前,我正在尝试开始使用Spring MVC。在尝试时,我遇到了编码问题。 我想在我的JSP页面上显示UTF-8字符,所以我在ModelAndView中添加了一个带有UTF-8字符的字符串。看起来像这样: 在JSP页面上,我只想显示具有UTF-8字符的字符串,如下所示: 结果,我得到以下结果: 请注意,下面的代码显示没有编码错误。我还在Springsource Tool Suite中将