Мне нужно сгенерировать имена файлов из имен, введенных пользователем. Эти имена могут быть на любом языке. Например:
Это введенные значения, поэтому я не могу гарантировать, что имена не содержат символов, которые недопустимы в именах файлов.
Пользователи будут загружать эти файлы из своего браузера, поэтому мне нужно убедиться, что имена файлов допустимы во всех операционных системах и во всех конфигурациях.
В настоящее время я делаю это для англоязычных стран, просто удаляя все не-буквенно-цифровые символы с помощью простого регулярного выражения:
string = string.replaceAll("[^a-zA-Z0-9]", "");
string = string.replaceAll("\\s+", "_")
Некоторые примеры преобразований:
Очевидно, это не работает на международном уровне.
Я решил найти/сгенерировать черный список всех символов, недопустимых во всех файловых системах, и удалить их из имен. Я не смог найти исчерпывающий список.
Я бы предпочел использовать существующий код в общей библиотеке, если это возможно. Я предполагаю, что это уже решенная проблема, однако я не могу найти решение, которое работает на международном уровне.
Имя файла предназначено для пользователя, загружающего файл, а не для меня. Я не собираюсь хранить эти файлы. Эти файлы динамически генерируются сервером по запросу из данных в базе данных. Имена файлов даны для удобства скачивания файла.