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

Encoding 我可以强制AWS CLI使用UTF编码吗?,encoding,utf-8,aws-cli,Encoding,Utf 8,Aws Cli,我在Windows上使用AWS CLI从DynamoDb查询项目。其中一些项目包括非ASCII字符 当查询命中这些项时,它将因错误而终止 “charmap”编解码器无法对位置中的字符u'u010d'进行编码 经过几个小时的搜索,我终于发现了一个黑客的解决办法;在AWSCLI\encodings目录下,我将utf_8.pyc复制到cp1252.pyc上。这让我可以继续,但当然是丑陋的 在使用之前,我还尝试将环境变量(如LANG、LC_ALL、LC_CTYPE)设置为en-US.UTF-8或类似的各

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

当查询命中这些项时,它将因错误而终止

“charmap”编解码器无法对位置中的字符u'u010d'进行编码

经过几个小时的搜索,我终于发现了一个黑客的解决办法;在AWSCLI\encodings目录下,我将utf_8.pyc复制到cp1252.pyc上。这让我可以继续,但当然是丑陋的

在使用之前,我还尝试将环境变量(如LANG、LC_ALL、LC_CTYPE)设置为en-US.UTF-8或类似的各种排列形式,但都没有看到任何效果


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

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

类型:


在控制台中(对于UTF-8,您也可以尝试不同的编码)并重试您的操作。

我已使用AWS CLI重新安装了AWS CLI,该CLI现在使用Python 3而不是Python 2,现在已不存在。

可能也会有所帮助-AWS的翻译和将结果存储到文件(或powershell变量)的问题: 有误:

aws translate translate-text --text "Investigation" --source-language-code "auto" --target-language-code "PL" >> a.txt
'charmap'编解码器无法对位置1中的字符“\u015a”进行编码:字符映射到

添加env。变量解决了这个问题

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"
    }
PS C:\Users\??\Documents>$aws=aws翻译文本--text“Request”--源语言代码“auto”--目标语言代码“PL”
“charmap”编解码器无法对位置4中的字符“\u015b”进行编码:字符映射到
PS C:\Users\??\Documents>退出
C:\Users\??\Documents>设置PYTHONIOENCODING=UTF-8
C:\Users\??\Documents>powershell
Windows PowerShell
版权所有(C)2016年微软公司。版权所有。
PS C:\Users\??\Documents>$aws=aws翻译文本--文本“请求”--源语言代码“自动”
--目标语言代码“PL”
PS C:\Users\??\Documents>$aws
{
“翻译文本”:“Prośba”,
“SourceLanguageCode”:“en”,
“TargetLanguageCode”:“pl”
}

我在windows 10上使用git bash,设置
PYTHONIOENCODING=UTF-8
实际上并没有改变环境。使用export
pythonionecoding=UTF-8
然后克服了Windows 10的
charmap
错误

,cli由python安装

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

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

设置PythonionEncoding=UTF-8


为了实现这一点,在AWSCLI\encodings目录中,我必须将utf_8.pyc复制到cp65001.pyc(该目录不存在),但这比我以前做的更少脏。谢谢!:)祝福你@RookieRick,我花了几个小时试图让它运行起来,直到我终于看到了你的精彩评论。这个选项不适用于我从Powershell 6会话调用Windows 10上的aws dynamodb scan--table name foo--region us-east-2。然而,@Marek的解决方案(见下文)确实如此。在windows10上尝试了这个解决方案,并且成功了。如果您是从Powershell会话设置环境变量,则语法为
$env:PYTHONIOENCODING='UTF-16'
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"
    }