将文本文件中的 Linux URI 编码文件名和路径转换为 ​​Windows 路径

将文本文件中的 Linux URI 编码文件名和路径转换为 ​​Windows 路径

我有在 Linux 中生成的 .m3u 文件,由于处理路径中特殊字符的方式不同,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!;-] 认真地说,如果您不能使用其他应用程序来生成 M3U 列表,那么这个或等效的 Perl 单行命令是最简单的方法。

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 编码或您的语言环境。

相关内容