google gsutil:ascii 编解码器无法编码字符

Posted

技术标签:

【中文标题】google gsutil:ascii 编解码器无法编码字符【英文标题】:google gsutil: ascii codec can't encode character 【发布时间】:2015-06-27 03:20:35 【问题描述】:

我正在尝试在谷歌云近线存储上同步我的本地文件夹,但出现以下错误:

"Caught non-retryable exception while listing file:///var/lib/..: 'ascii' codec can't encode character u'\xe9' in position 170: ordinal not in range(128)
CommandException: Caught non-retryable exception - aborting rsync
Caught ^C - exiting"

请问有什么解决办法吗? 谢谢。

【问题讨论】:

在 A-Za-z0-9 中更改文件夹的名称和一些特殊字符也避免使用非常大的文件夹名称,因为这可能会增加路径字符串的长度导致错误。 感谢您的回答 anmol_uppal,但我尝试同步“A-Za-z0-9”文件夹名称中的文件,但错误仍然存​​在。我猜它认为字符编码与 UTF-8 不同。 【参考方案1】:

您尝试同步的文件名中似乎有一个带重音的 e - é。

对所有对象名和文件名使用 UTF-8 将确保 gsutil 在对文件进行操作时不会遇到字符编码错误。不幸的是,由于许多与 gsutil 无关的原因,以这种方式上传/下载的文件仍然可能存在互操作性问题;示例:跨不同平台(如 Linux 和 Windows)复制文件名。如果您使用的是 Windows 控制台,您可以指定通配符或文件夹(使用 -R 选项)而不是显式命名单个文件以防止这种情况发生。

如果文件太多,可以使用工具将旧字符编码转换为 UTF-8。一个这样的工具是native2ascii。

【讨论】:

文件数以千计,如何查找文件名错误?【参考方案2】:

您也可以使用https://github.com/minio/mc,它在 S3 兼容模式下支持 Google Cloud Storage。

mc 完全是 UTF-8 ,可以上传和下载所有已知的 UTF-8 字符。

按照 Google 凭据指南获取您的 AccessKeyID 和 SecretAccessKey。一旦你让他们更新你的 ~/./mc/config.json 配置文件。

$ mc config host add storage.googleapis.com <your_access_key> <your_secret_key> S3v2

注意:Google Cloud Storage 仅支持 Legacy Signature Version 2 :(,因此您必须选择 - S3v2

【讨论】:

以上是关于google gsutil:ascii 编解码器无法编码字符的主要内容,如果未能解决你的问题,请参考以下文章

gsutil api 谷歌存储近线

Google App Engine:UnicodeDecodeError:“ascii”编解码器无法解码位置 48 中的字节 0xe2:序数不在范围内(128)

UnicodeDecodeError:“ascii”编解码器无法解码位置 0 的字节 0xe0:序数不在范围内(128)

“UnicodeEncodeError:‘ascii’编解码器无法编码字符”

UnicodeEncodeError:“ascii”编解码器无法编码字符

Python3'ascii'编解码器无法编码字符