【问题标题】:JSON parsing encoding causes a unicode encode errorJSON 解析编码导致 unicode 编码错误
【发布时间】:2017-01-17 12:31:30
【问题描述】:

我需要在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 类型,但我不知道如何。

【问题讨论】:

    标签: python json bash python-2.x


    【解决方案1】:

    你已经有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']"
    

    【讨论】:

    • 啊......我的错,我认为问题出在 Python 中,让我看看我是如何通过管道处理它的
    • 非常感谢!我为此苦苦挣扎了好几天。
    猜你喜欢
    • 2014-07-17
    • 2012-01-28
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多