我可以强制AWS CLI使用UTF编码吗?

时间:2016-09-02 22:03:04

标签: encoding utf-8 aws-cli

我在Windows上使用AWS CLI查询DynamoDb中的项目。其中一些项目包括非ASCII字符。

当查询命中这些项目时,它会因错误而死亡

  

'字符表'编解码器不能对字符u' u010d'进行编码。在位置....

经过几个小时的搜索,我终于偶然发现了一个糟糕的解决方法;在AWSCLI \ encodings目录下,我通过cp1252.pyc复制了utf_8.pyc。这让我可以继续,但当然很难看。

在诉诸于此之前,我还尝试将LANG,LC_ALL,LC_CTYPE等环境变量设置为en-US.UTF-8或类似的各种排列,这些都没有我能看到的效果。

是否有人知道如何(或甚至可能)告诉AWS CLI使用特定编码?

5 个答案:

答案 0 :(得分:4)

我已经使用upgraded MSI installers重新安装了AWS CLI,该命令行现在使用Python 3而不是Python 2,并且unknown encoding error已经消失了。

答案 1 :(得分:3)

由于您使用的是命令行界面,因此更改终端的编码方案应解决此问题。

类型:

chcp 65001
在控制台中

(对于UTF-8;您也可以尝试不同的编码)并重试您的操作。

答案 2 :(得分:2)

我在Windows 10上使用git bash,并且设置PYTHONIOENCODING=UTF-8实际上并没有更改环境。使用过的导出PYTHONIOENCODING=UTF-8然后克服了charmap错误

答案 3 :(得分:1)

也许也有帮助-从AWS转换并将结果存储到文件(或powershell变量)的问题: 出现错误:

aws translate translate-text --text "Investigation" --source-language-code "auto" --target-language-code "PL" >> a.txt

“字符映射”编解码器无法对位置1处的字符“ \ u015a”进行编码:字符映射至

添加环境。变量解决了问题

set PYTHONIOENCODING=UTF-8

aws translate translate-text --text "Investigation" --source-language-code "auto" --target-language-code "PL" >> a.txt

powershell中的内容相同:

PS C:\Users\???\Documents> $aws = aws translate translate-text --text "Request" --source-language-code "auto"--target-language-code "PL"

'charmap' codec can't encode character '\u015b' in position 4: character maps to <undefined>

    PS C:\Users\???\Documents> exit

    C:\Users\???\Documents>set PYTHONIOENCODING=UTF-8

    C:\Users\???\Documents>powershell
    Windows PowerShell
    Copyright (C) 2016 Microsoft Corporation. All rights reserved.

    PS C:\Users\???\Documents> $aws = aws translate translate-text --text "Request" --source-language-code "auto"
    --target-language-code "PL"

    PS C:\Users\???\Documents> $aws

    {
        "TranslatedText": "Prośba",
        "SourceLanguageCode": "en",
        "TargetLanguageCode": "pl"
    }

答案 4 :(得分:0)

用于Windows 10和cli的是由python安装的

错误: 'charmap'编解码器无法对位置XX-XX中的字符进行编码:字符映射到

解决方案:在命令行中运行以下命令

设置PYTHONIOENCODING = UTF-8