我需要在bash中解析一些简单的JOSN,其中包含没有外部依赖项的非ascii字符,因此我使用了python解决方案from this answer
cat $JSON_FILE | python -c "import sys, json; print json.load(sys.stdin)['$KEY']"
这适用于ascii值,但其他值会引发此错误:
'ascii'编解码器无法在位置1212编码字符u'\ u2019':序数不在范围内(128)
在查看this answer时,我认为我需要转换为
unicode
类型,但是我不知道如何。 最佳答案
您已经有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']"