私はたまたまOS Xにラップトップ、Linuxにコンピューター、そしてWindowsの友人の一人を持っています。 また、
Dropboxを介して、これら3台のコンピューターはすべて異なるドキュメントを交換します。 さまざまなメモ、タスクなどを保存するテキストを含む 残念なことに、MacOSxで書かれたテキストはWindowsのメモ帳では読みにくくなり、MacOSxではWindowsのテキスト編集が読みにくくなります。
そして全体的な理由は、WindowsではノートブックがWindows 1251のエンコーディングを使用し、OS XではデフォルトでMACCYRILLICが使用されるためです。 さらに、両方のプログラムはUTF-8エンコーディングで問題なく動作します。
あるエンコーディングから別のエンコーディングに変換するのは不便で、端末を開いてiconvコマンドを大事にしています...
考え直して、私は小さなスクリプトを作成しました。それは、使用されるエンコーディングを決定し、すべてのtxtファイルをUTF-8に変換します。
私がすべてに使用するもの:
Python 2.7Mac OS X 10.7.5
Pycharm IDE最初は、追加のモジュールなしで、自分でエンコード定義を作成しました。 しかし、
ad3wのアドバイスにより、
エンコードを決定するために既製のchardetモジュールを使用して書き直すことにしました。
誰が気に、前
恐ろしいコード定義は、エンコーディングの単純な列挙と、余分な文字が含まれないものの選択です。 そして、文字セットを定義します。 もちろん、この方法はDOSグラフィックを含むファイルには適していませんが、txtを使用する通常の目的には十分です。
chardet 1.1モジュールをダウンロードし、
開梱してインストール:
python setup.py install
ファイルをトランスコードするための独自のスクリプトを作成します。
次に、OS Xのフォルダーからこのスクリプトを直接実行できるようにする必要があります。
Automatorを開き、サービスを作成します。
上部でアイテムを選択して、「サービスはFinder.appのファイルとフォルダーを受信します」を取得します。
次に、アクション「get selected objects Finder」を設定します。
次に、設定「パス入力:引数として」の「シェルスクリプトを実行」とその内容:
for f in "$@" do python /___/convert_encoding.py "$f" 2>/dev/null done
chardetモジュールエラーが出力されたときにオートマトンが実行を停止しないように、2> / dev / nullを追加しました。
最後の項目は「Growl通知を表示する」です(変換が行われたことを書き込めます)。

名前をラテン文字で保存し(ロシア語では、何らかの理由で、名前を変更するまでメニュー項目が表示されませんでした)、確認します。
Finderの[サービス]サブメニューのファイルとフォルダーメニューに新しいメニュー項目が表示されます。
PSこれは、コメントとその使用経験に基づいたスクリプトの第5版です。
PS私は問題を見つけました:pythonが書き込み先のファイルのエンコーディングを認識した場合、それはそこで動作します。 これは必要ないので、保存する前にファイルを削除します。