У меня есть сервер, на котором размещено много файлов (например, также файлы, имена которых содержат специальные символы, такие как «Ü» и «թ»)
теперь я столкнулся с большой проблемой, потому что я не могу создать правильные URL-адреса, потому что мне нужно кодировать специальные символы в форме, которую понимает браузер (например, %XX):
- www..../.../SPRÜCHE.txt --> должен быть закодирован как "SPR%DCCHE.txt", чтобы его можно было найти (иначе 404)
- www..../.../SPRCHEթ.txt --> должен быть закодирован как "SPRCHE%D5%A9.txt", чтобы его можно было найти (иначе 404)
Как видите, первому нужен один фрагмент %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-адресов?
Для меня очень важно решить эту проблему, поэтому я прошу вас, ребята, о помощи, пожалуйста (используется только для прямых 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?