我有一个文件路径:
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
在<a/>
内当我检查 HTML 标签时。我想在 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()
。如何使用浏览器获取相同的字符串?
最佳答案
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 中的字符执行百分比转义。类文档明确指定单参数构造函数期望参数已经具有正确的转义。
关于java - JS 的encodeURI 相当于Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591776/