2017-05-03 8 views
2

私は少しのdjango 1.1アプリケーションをビルドしています(この問題はPython固有のものと考えていますが)。データの取得と分類私はまた、3番目のコマンドを使用して要約を印刷したいと思っています。私は私の問題は、テキストデータを取得し、コンソールまたはコンソールにPython 3.6.1 - 人間が読めるテキスト、特殊文字としての文字列の印刷

> or >> 

を使用してドキュメントにそれを印刷するから来ているのMacOS 10.12.3

を使用しています。

は、私は、Python 3.6.1

私はTweepy APIを使用しているのエイリアスを使用してこれらのスクリプトを実行しているんだけど、それがうまくいけば、関連するべきではありません。

これらのスニペットは、私が解決するために願っています問題を説明する必要があります。

print(type(data)) 
print(type(data.text)) 
try: 
    print(data.text) 
except UnicodeEncodeError: 
    print("no printing today :(") 
print(type(data.text.encode('UTF-8'))) 
print(data.text.encode('UTF-8')) 

この出力:

<class 'tweepy.models.Status'> 
<class 'str'> 
no printing today :(
<class 'bytes'> 
b'kontroll p\xc3\xa5 ... v\xc3\xa5pen.' 

醜いものの両方が文字「A」があるはずです。

にスローされますエラーです:

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

それは(私はPython 3.6.1スクリプトで)やって 'ASCII' コーデックと言うが、:

print(sys.getdefaultencoding()) 

出力:

utf-8 

実行

Pythonで再び

2.7.10出力:

ascii 

だから、スローエラーが何2.7.10出力と一致します。私は私がない限り、デフォルトのエンコーダは(これは私のシステムが原因で発生することがあれば私も見しようとする試みで

export LOCALE="no_NB.UTF-8" 

を試してみました

を何について間違っている可能性可能性を割り引いておりませんこれが何をしているのか誤解している)。私はこれを現在のセッションを通して持続すると思って、どのファイルにも書きませんでした。

何らかのエンコーダが間違って使用されていますか?それは私のターミナルエンコーディングですか?ターミナルとファイルに特殊文字を書き込むにはどうすればよいですか?文字列は本当にこれが正しくなるのは難しいですか?

何か助けていただければ幸いです。私の.bash_profileで

export LC_ALL=no_NO.UTF-8 
export LANG=no_NO.UTF-8 

を設定

+0

問題は*端末エミュレータ*がUnicode文字をサポートしていないか、またはASCIIでエンコードするように設定されている可能性が高いため、*印刷*する際にUnicodeEncodeエラーが発生する可能性があります。文字列 '.encode'を実行すると' bytes'オブジェクトが返されます。このオブジェクトはASCII順列の範囲外のバイトについて常に「醜い」表現をします。*デコードしない限り*(あるいはあなたの場合は、それをエンコードする)。 –

+1

この '' no_NB.UTF-8 ''は使用可能なロケールですか? 'locale -a |を試してみてください。あなたのシェルにgrep "no_NB.UTF-8" 'マシン(osx 10.12.4)で見つけられませんでしたが、 'no_NO.UTF-8'が見つかりました –

答えて

0

は今私の端末では、私がしたい文字を見るために私を可能にし、それはまた、正常ファイルにエコーされます。

関連する問題