こんにちは、
私が本当に試したとしても... Python、Windows、Ansi、文字エンコードに関しては、行き詰まり、やや必死です。私は助けが必要です、真剣に...過去数時間ウェブを検索することは何の助けにもなりませんでした、それはただ私を夢中にさせます。
私はPythonを初めて使用するので、何が起こっているのかほとんどわかりません。私は言語を学ぼうとしているので、ほとんど完了していない私の最初のプログラムは、mp3を含む特定のフォルダから音楽プレイリストを自動的に生成するはずです。1つの問題を除けば、それは問題なく機能します...
...プレイリストファイルにウムラウト(äöü)を書き込めません。
「間違ってエンコードされた」データの解決策を見つけた後、sys.argv
私はそれに対処することができました。MP3からメタデータを読み取るとき、フランス語のアクセントやスラッシュが含まれるこのクレイジーなスカンジナビアの「o」など、国際的な特殊文字をすべて取り除くために、ある種の単純な文字置換を使用しています(方法もわかりません)入力するには...)。大丈夫だ。
しかし、少なくとも言及されたウムラウトをプレイリストファイルに書きたいのですが、これらの文字はここドイツでは本当に一般的です。また、文字の欠落やスペルの誤りを気にしないメタデータとは異なり、これは関連性があります。これは、ファイルへのパスを書き込んでいるためです。
さまざまなエンコードとデコードの方法を試しましたが、ここにすべてをリストすることはできません。30分前に試した設定がわかりません。私はオンライン、ここ、および他の場所で、いくつかの目的のために機能しているように見えるコードを見つけました。私のものではありません。
トリッキーな部分はこれだと思います。問題は、書き込む必要のあるファイルのフォーマットと呼ばれるAnsiにあるようです。正解-私は実際にこのAnsiのものが必要です。約2時間前、私は実際にUFT-8ファイルに好きなものを書き込むことができました。魅力のように機能します...私のプレーヤー(Winamp、古いバージョン)がどういうわけかそれらのUTF-8プレイリストファイルで動作しないことに気付くまで。エディターで正しく表示されていても、パスを解決できませんでした。
ファイル形式をAnsiに戻すと、特殊文字を含むパスが破損します。推測しているだけですが、WinampがこのUTF-8ファイルをAnsiとして読み取ると、現在発生している問題が発生します。
それで...
- パスにäöüを書く必要があります。そうしないと機能しません。
- ANSIで「エンコードされた」ファイルである必要があります。そうでない場合は機能しません。
line.write(str.decode('utf-8'))
ファイルの機能を壊すようなもの- スクリプトの冒頭にあるような魔法のコメントは、
# -*- coding: iso-8859-1 -*-
ここでは何もしません(ただし、前述のメタデータとその中で許可されている文字に関しては役立ちます...) - ああ、私はPython2.7.3を使用しています。サードパーティモジュールの依存関係、ご存知のとおり...
このエンコーディングの地獄から抜け出す方法に私を導くことができる人はいますか?どんな助けでも大歓迎です。別の関数またはクラスに500行のコードが必要な場合は、それらを入力します。そのようなものを処理するためのモジュールがあれば、私に知らせてください!買おう!役立つものはすべてテストされます。
読んでくれてありがとう、コメントありがとう、
挨拶!