2016-09-09 7 views
1

私は外部依存せずに非ASCII文字が含まれているbashでいくつかの簡単なJOSNを解析する必要があるので、私はPythonのソリューションfrom this answerJSONの解析エンコーディングはUnicodeのエンコードエラーが発生し

cat $JSON_FILE | python -c "import sys, json; print json.load(sys.stdin)['$KEY']" 

これは、ASCII値のために働くの使用が、他の値は、このエラーがスローされます。

this answerを見て

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

私はunicode型にキャストする必要があると思うが、私は方法がわかりません。

答えて

3

すでに印刷が失敗した場合はunicodeですが、の場合はです。

ロケールセットがない、ロケールがASCIIに設定されている、またはPythonの結果を他のものにパイプしている(しかし質問に含まれていない)ためです。後者の場合、Pythonはパイプに接続するときに使用するコーデックを推測することを拒否します(それ以外の場合は端末ロケールを使用できます)。

PYTHONIOENCODING environment variableを適切なコーデックに設定します。お使いの端末は、たとえばUTF-8使用している場合:

cat $JSON_FILE | PYTHONIOENCODING=UTF-8 python -c "import sys, json; print json.load(sys.stdin)['$KEY']" 
+0

ああ...私の悪い私は、問題は、私はそれが – Robert

+0

'PYTHONIOENCODING = UTF-8'はトリックをどうやっIパイプチェックしてみましょう、Pythonでいたと仮定しました。..ありがとう! – Robert