java - Java 中的 URLDecoder 在 "São Paulo"处阻塞

标签 java url encoding

我在 Java 中使用 URLDecoder 类来分析一些 url,但遇到了一个问题。我不确定这是一个错误还是预期的行为,所以就是这样。

考虑这个网址: https://id2.s.nfl.com/fans/mobile/login?gigyresp=true&city= S%u00e3o+Paulo%2c+巴西&profileURL=...

URLDecoder 对“São Paulo”部分感到窒息,尤其是“ã”,它似乎被编码为“%u0”。几乎所有其他事情似乎都处理得很好,但这个特殊的事情却不然。

我正在使用以下内容:

URLDecoder.decode(url, "UTF-8");

我的堆栈跟踪是:

Caused by: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "u0"
    at java.net.URLDecoder.decode(URLDecoder.java:173)

有什么想法可以让 URLDecoder 正确解析它吗?

最佳答案

URL 编码是通过八位字节 %AB 完成的。您的编码似乎是 java 字符串编码 \u00e3 和 URL 编码(如 %xxxx)的混合,这是无效的。

如果将字符串更改为 "S\u00e3o Paulo, Brazil" 并使用 URLEncoder.encode(url, "UTF-8") 对其进行编码,您将获取 S%C3%A3o+Paulo%2c+Brazil,这是完全可解码的。

关于java - Java 中的 URLDecoder 在 "São Paulo"处阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903168/

相关文章:

java - 组协调器不可用-Kafka

javascript - 在javascript中获取相对于另一个url的url

iphone - 在 iPhone 中显示从 ALAsset 检索到的 URL 中的图像

gradle - 更改 `gradle run`的输出编码(cp866)

javascript - 从 PHP 中的 UTF-8 字符串中删除控制字符

java - iText 水平分割单元格

java - 在 JTable 中设置默认启用的单选按钮

java - static int 变量线程安全吗?

.htaccess - htaccess 重定向 index.php?p=my topic title to/my-topic-title

python - SQLAlchemy 的 Unicode 问题