我有一个服务器,它托管许多文件(例如文件,其中文件名包含特殊字符,如“Ü”和“թ”)
现在我遇到了一个大问题,因为我无法创建正确的URL,因为我必须以浏览器理解的形式对特殊字符进行编码(例如%XX):
如您所见,第一个需要一个%XX片段作为“特殊字符”,而第二个需要两个(%XX%XX)它们。
目前我正在用这个函数编码链接,但是当它与一个文件一起工作时,另一个不起作用(取决于我选择的编码)
public static String encodeURIComponent(String filename) {
String result;
try {
// result = URLEncoder.encode(filename, "CP1252") //works only for SPRÜCHE
result = URLEncoder.encode(filename, "UTF-8") // works only for SPRCHEթ
.replaceAll("\\+", "%20").replaceAll("\\%21", "!")
.replaceAll("\\%27", "'").replaceAll("\\%28", "(")
.replaceAll("\\%29", ")").replaceAll("\\%7E", "~");
} catch (UnsupportedEncodingException e) {
result = filename;
}
return result;
}
java世界中是否有一体化的url-safe编码函数?
对我来说解决这个问题非常重要,所以我请你们帮忙(它只用于直接的http访问文件链接 - 没有网站或其他东西)。
谢谢你
PS:数据库是utf8_general_ci,文件名(在数据库中正确显示为SPRCHEթ和SPRÜCHE)也用作文件名(文件从C上传:... \ SPRCHEթ.txt等) FTP-Viewer将上传的文件显示为:SPRÜCHE.txt和SPRCHEÕ©.txt(这可能是一个提示?) 我问自己,为什么SPRÜCHE.txt适用于CP1252而SPRCHEթ.txt使用UTF-8?