【问题标题】:JS encodeURI Equivalent of JavaJS encodeURI 等价于 Java
【发布时间】:2017-06-16 14:27:24
【问题描述】:

我有一个文件路径:

file://///10.10.10.10/Yev Pri - Ru─▒n G├╢z├╝yle Ortado─Яu.pdf

这显示为:

file://///10.10.10.10/Ye%20Pri%20-%20Ru%E2%94%80%E2%96%92n%20G%E2%94%9C%E2%95%A2z%E2%94%9C%E2%95%9Dyle%20Ortado%E2%94%80%D0%AFu.pdf

当我检查它时,在 HTML 的 <a/> 标记内。我想在 Java 中生成相同的字符串。当我用

对其进行编码时

URLEncoder.encode(path, StandardCharsets.UTF_8.displayName())

file%3A%2F%2F%2F%2F%2F10.10.10.10%2FYev+Pri+-+Ru%E2%94%80%E2%96%92n+G%E2%94%9C%E2%95%A2z%E2%94%9C%E2%95%9Dyle+Ortado%E2%94%80%D0%AFu.pdf

似乎浏览器应用encodeURI()。如何用浏览器获取相同的字符串?

【问题讨论】:

标签: java html encoding


【解决方案1】:

URLEncoder 用于对表单数据进行编码。要创建转义 URL 或 URI,请使用 java.net.URI class:

URI uri = new URI("file", "///10.10.10.10/Yev Pri - Ru─▒n G├╢z├╝yle Ortado─Яu.pdf", null);
String escapedURI = uri.toASCIIString();

注意:您不能使用new URI("file://///10.10.10.10/Yev Pri - Ru─▒n G├╢z├╝yle Ortado─Яu.pdf"),因为该构造函数不会对可能不合法直接出现在 URI 中的字符执行百分比转义。类文档明确指定单参数构造函数期望参数已经正确转义。

【讨论】:

  • 那么,我不能用这个作为答案吗?
  • 您可以使用带有 三个 参数的 URI 构造函数,就像我的代码块使用的那样。您不能使用带有一个参数的 URI 构造函数。
猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
相关资源
最近更新 更多