【问题标题】:Can I force AWS CLI to use UTF encoding?我可以强制 AWS CLI 使用 UTF 编码吗?
【发布时间】:2016-09-02 22:03:03
【问题描述】:

我在 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 使用特定编码?

【问题讨论】:

    标签: encoding utf-8 aws-cli


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      'charmap' 编解码器无法在位置 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"
          }
      

      【讨论】:

      • 在 Windows 10 上尝试了这个解决方案,并且成功了。如果您从 Powershell 会话设置环境变量,则语法为 $env:PYTHONIOENCODING='UTF-16'
      【解决方案3】:

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

      类型:

      chcp 65001
      

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

      【讨论】:

      • 为此,我必须在 AWSCLI\encodings 目录中将 utf_8.pyc 复制到 cp65001.pyc(它不存在),但这比我之前所做的要少。谢谢! :)
      • 祝福你@RookieRick,我试图让它工作几个小时,直到我终于看到你的精彩评论。
      • 此选项不适用于我在 Windows 10 上从 Powershell 6 会话调用 aws dynamodb scan --table-name foo --region us-east-2。但是,@Marek 的解决方案(见下文)做到了。
      【解决方案4】:

      我使用 upgraded MSI installers 重新安装了 AWS CLI,它现在使用 Python 3 而不是 Python 2,而 unknown encoding error 现在已经不存在了。

      【讨论】:

        【解决方案5】:

        对于 Windows 10 和 cli 由 python 安装

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

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

        设置 PYTHONIOENCODING=UTF-8

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-21
          • 1970-01-01
          • 2011-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-25
          相关资源
          最近更新 更多