JS encodeURI相当于Java

时间:2017-06-16 14:27:25

标签: java html encoding

我有一个文件路径:

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()。如何使用浏览器获取相同的字符串?

1 个答案:

答案 0 :(得分:2)

URLEncoder用于编码表单数据。要创建转义的网址或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中直接显示的字符的百分比转义。类文档显式指定单参数构造函数期望参数已经具有正确的转义。