编辑:注意,这是一个较老的问题,从AWS CLI是v1
的时候开始——正如评论中所指出的,v2
可能有其他更好的解决方案
我在Windows上使用AWS CLI从DynamoDb查询项目。其中一些项目包含非ascii字符。
当查询遇到这些项时,它将以错误
结束。'charmap'编解码器无法对位置为....的字符u'u010d'进行编码
经过几个小时的搜索,我终于偶然发现了一个hack的解决方案;在AWSCLIencodings目录下,我复制了utf_8。Pyc over cp1252.pyc。这允许我继续,但当然是丑陋的。
在此之前,我还尝试将LANG、LC_ALL、LC_CTYPE等环境变量设置为en-US的各种排列。UTF-8或类似的格式,我看不出任何效果。
有人知道如何(或者甚至可能)告诉AWS CLI使用特定的编码吗?
由于您使用的是命令行接口,更改终端的编码方案应该可以解决这个问题。
类型:chcp 65001
在控制台中(对于UTF-8;您也可以尝试不同的编码)并重试操作。
也许它也可以帮助解决从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"
}
我使用升级后的MSI安装程序重新安装了AWS CLI,现在使用Python 3而不是Python 2, 未知编码错误现在消失了。
我在windows 10上使用git bash,设置PYTHONIOENCODING=UTF-8
实际上没有env改变。使用出口PYTHONIOENCODING=UTF-8
,克服charmap
错误
Windows 10和cli是由python安装的
错误:'charmap'编解码器无法编码位置XX-XX中的字符:字符映射到
解决方案:在命令行
中执行以下命令设置PYTHONIOENCODING = utf - 8