你好
即使我真的尝试过,但当涉及到Python、Windows、Ansi和字符编码时,我仍然卡住并感到绝望。我需要帮助,非常认真地...在过去的几个小时里搜寻网络没有任何帮助,只是让我疯狂。
我是Python的新手,所以我几乎不知道正在发生什么。我即将学习这门语言,因此我的第一个程序——几乎做完了——应该会从包含mp3的给定文件夹自动生成音乐播放列表。这除了一个问题之外都运行正常...
...我无法将Umlaute(äöü)写入播放列表文件中。
在找到解决sys.argv
中“错误编码”的数据的方法后,我可以处理它。当阅读MP3的元数据时,我使用某种简单的字符替换来摆脱所有那些国际特殊字符,例如法语重音或这个奇怪的斜杠 (我甚至不知道如何输入它...) 的斯堪的纳维亚语字母“o”。一切都很好。
但是我至少想将提到的Umlaute写入播放列表文件中,这些字符在德国非常普遍。与元数据不同,我不关心一些缺失的字符或拼错的单词,这是相关的-因为现在我正在写文件的路径。
我尝试了许多不同的编码和解码方法,无法在此列出...该死,我甚至无法告诉自己一个半小时前尝试的哪些设置。我在网上找到了代码,在这里以及其他地方,它们似乎可以用于某些目的。只是对我来说无效。
我认为棘手的部分是:似乎问题在于我需要写入文件的 Ansi 格式。确实,我需要这个Ansi相关的东西。大约两个小时前,我成功地将内容写入了一个UTF-8的文件中,效果很好...直到我意识到我的播放器(Winamp,旧版本)以某种方式无法使用这些UTF-8播放列表文件。即使在编辑器中看起来正确,播放器也无法解析路径。如果我将文件格式改回Ansi,则包含特殊字符的路径将被破坏。我只是猜测,但如果Winamp将这些UTF-8文件读取为Ansi,则会导致我目前正在经历的问题。
所以...
- 我必须在路径中写入äöü,否则它不会工作
- 它必须是ANSI-"编码"文件,否则它不会工作
- 像
line.write(str.decode('utf-8'))
这样的语句会破坏文件的功能 - 类似于
# -*- coding: iso-8859-1 -*-
的神奇注释在这里无效 (虽然当涉及到元数据和允许其中的字符时它很有帮助...) - 哦,我正在使用Python 2.7.3。第三方模块依赖关系,你知道的...
有没有人能够指导我找到一条摆脱这种编码困境的路?任何帮助都是受欢迎的。如果我需要500行代码来编写其他功能或类,我会打出它们的。如果有用于处理此类事情的模块,请让我知道!我会购买它!任何有用的东西都将被测试。
感谢您的阅读,感谢任何评论,
问候!