Преобразование имен файлов и путей в кодировке URI Linux в текстовом файле в пути Windows
У меня есть файлы.m3u, сгенерированные в Linux, которые не могут быть прочитаны программами Windows из-за другого способа обработки специальных символов в путях.
Например, как я могу преобразовать этот путь Linux:
Music/Timo%20Rautiainen%20&%20Trio%20Niskalaukaus/07%20H%C3%A4mmennys%20ja%20viha.mp3
в этот путь читается в Windows:
Music/Timo Rautiainen & Trio Niskalaukaus/07 Hämmennys ja viha.mp3
в текстовом файле?
Было бы легко, если бы я мог просто заменить все экземпляры%20 пробелами, но, как вы можете видеть выше, в путях и именах файлов есть специальные символы (и т. Д.), Которые также необходимо преобразовать. Они слишком разнообразны, чтобы их можно было сделать с помощью регулярных выражений, и у меня даже нет списка всех специальных символов, используемых в моих файлах.
изменить: как уже упоминалось в комментариях, выше является результатом кодирования URL/URI, а не причины, которые я постулировал.
Простым решением было использование онлайн-кодировщика / декодера URL, который очень быстро исправлял пути. Это декодер URL, который я использовал. Принято ответ ниже с родным методом Linux Python.
1 ответ
Если вам не нравится Perl, используйте Python!;-] Серьезно, этот или эквивалентный Perl однострочный - самый простой способ, если вы не можете использовать другое приложение для генерации списков M3U.
from sys import stdin
from urllib.parse import unquote
print(*map(unquote, stdin), sep='', end='')
Бежать с:
python3 [script file] < [quoted m3u file] > [unquoted m3u8 file]
Обратите внимание, что .m3u8
Расширение дает приложению для чтения подсказку, что файл имеет кодировку UTF-8. В Linux это может не иметь значения, потому что в большинстве случаев это все равно кодировка по умолчанию, но многие приложения Windows могут использовать кодировку windows-1250 или любую другую локаль.