2016-09-19 10 views
9

を使用して、私はUTF-8でエンコードされたファイルから読み込まれ、印刷しようとするために、こののpython3コードを持っている:印刷UTF-8のPython 3で崇高なテキスト3

f = open('mybook.txt', encoding='utf-8') 
for line in f: 
    print(line) 

私は崇高なテキスト3を使用して構築すると私が得ます次のエラーが発生しました:

UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 18: ordinal not in range(128) 

ただし、python3を使用して端末でコードを実行すると、ファイルが動作します。 (私はそれが起こっていることだと思います)

f = open('mybook.txt', encoding='utf-8') 
for line in f: 
    print(line.encode('utf-8')) 

そして、それはUTF-8でエンコードされたバイトの文字列を出力します:

私のビルド構成は、私はそれを変更した場合

{ 
"cmd": ["/usr/local/bin/python3", "$file"] 
, "selector": "source.python" 
, "file_regex": "file \"(...*?)\", line ([0-9]+)" 
} 

です。私はA python program fails to execute in sublime text 3, but success in bashごとにこのENV変数を変更しようとした場合

b'Hello\n' 
b'\xc2\xab\xe2\x80\xa2\n' 
b'Goodbye' 

しかし、私はまた、画面上のUnicode文字を印刷するには、このから行く方法がわからない...また

、それはまだ」doesnのそれを修正する。

+0

てみ 'プリント(line.decode())' –

+2

システムを構築SublimeText出力デバイスはASCIIのみを処理するようです...あなたがそれについて何かできるかどうかを見るためにSublimeTextオプションをチェックしてください。 – Bakuriu

+1

デコードは文字列内のメソッドではありません。上記の情報を別の情報で更新しました。 – allstar

答えて

22

答えは実際にあなたの質問にリンクされた質問にあります。PYTHONIOENCODING"utf-8"に設定する必要があります。しかし、OS Xは愚かであり、Terminalに設定された環境変数や.bashrcなどのファイルを参照しないため、これは他の質問に対する答えに示された方法では機能しません。代わりに、その環境変数をSublimeに渡す必要があります。

幸いにも、ST3ビルドシステム(ST2についてはわかりません)には"env"オプションがあります。これは​​に渡されたキーと値の辞書で、"target"オプションが設定されていないビルドシステムを実行します。上記のコメントで説明したように、Linux上でST3(ビルド3122)を実行するとASCII以外の文字を含むUTF-8でエンコードされたテキストファイルでサンプルプログラムが正常に動作していましたが、OS X 。すべてのこと、それが実行するために取得する必要があった、このラインをencludeするために、ビルドシステムを変更しました:

"env": {"PYTHONIOENCODING": "utf8"}, 

私はビルドシステムを保存し、Bを押すと、プログラムはうまく走りました。あなたが​​、またはPackages/Python/Python.sublime-build、または.sublime-packageアーカイブに梱包他のファイルを読みたい場合

ところで、パッケージ制御を通じてPackageResourceViewerをインストールします。コマンドパレットの "Open Resource"オプションを使用して、個々のファイルまたは "Extract Package"(どちらも先に "PackageResourceViewer:"またはprvファジー検索を使用)を使用して、パッケージ全体をPackagesフォルダに抽出しますSublime Text → Preferences → Browse Packages…(他のオペレーティングシステムではPreferences → Browse Packages…)を選択してアクセスします。それは、次の場所に、ハードドライブ上の場所にあります。

  • のLinux:~/.config/sublime-text-3/Packages
  • OS X:~/Library/Application Support/Sublime Text 3/Packages
  • Windowsの正規のインストール:C:\Users\YourUserName\AppData\Roaming\Sublime Text 3\Packages
  • ポータブルWindowsのインストール:InstallationFolder\Sublime Text 3\Data\Packages

をファイルをPackagesフォルダに保存したら(「オープンリソース」オプションで表示し、oを変更せずに閉じるだけであれば)それらを保存すると、それらは保存されません)、.sublime-packageアーカイブに含まれる同じ名前のファイルを上書きします。たとえば、PythonパッケージのデフォルトPython.sublime-buildファイルを編集する場合、変更はPackages/Python/Python.sublime-buildとして保存され、メニューからPythonビルドシステムを選択すると、そのバージョンのみが使用されます。それは作品

+0

驚くばかりの答え、私は本当に細部を感謝します!これは私のために働いた。 – allstar

6

、おかげで、崇高なテキスト3

ツールの完全なビルドシステムのスクリプト - >システムの構築 - >新規

{ 
    "shell_cmd": "python \"$file\"", 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python", 
    "env": {"PYTHONIOENCODING": "utf8"} 
} 
関連する問題