我有一个文件路径:
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()
。如何使用浏览器获取相同的字符串?
答案 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中直接显示的字符的百分比转义。类文档显式指定单参数构造函数期望参数已经具有正确的转义。