我的静态站点构建过程如下:
- 我创建了
public
文件夹 - 我复制
public
文件夹并重命名为gzipped
. - 在
gzipped
文件夹上,我运行以下代码:find . -type f -exec gzip "{}" ; -exec mv "{}.gz" "{}" ;
- 然后我推送我的存储库,构建会自动触发。
当我在.md
文件中包含€字符时,如下所示,然后出现以下错误。显然它不喜欢在我的.md
文件中写得如此- €1000
的特殊字符(我猜破折号-
是罪魁祸首):
tags:
- tag1
- €1000
- tag2
- tag3
这里的错误:Step #4: Caught non-retryable exception while listing file://./gzipped: 'ascii' codec can't encode characters in position 10-12: ordinal not in range(128)
Step #4: CommandException: Caught non-retryable exception - aborting rsync
.
如何在破折号前用欧元修复我的tags listing
?
当你说"推送到我的存储库"时,我假设你正在使用gsutil rsync
命令,主要是由于你收到的错误消息,它来自以下代码行:
https://github.com/GoogleCloudPlatform/gsutil/blob/65d6a3e30e2ad51279841a8b58008a5396568ddd/gslib/commands/rsync.py#L645
瞥了一眼那里的代码,我不确定为什么 gsutil 会尝试使用 ASCII 编解码器。我的两个最佳猜测是:
- 也许您正在运行具有一些编码错误的旧版本的 gsutil?您可以运行
gsutil version
进行检查。 - 也许您正在使用ASCII(或不支持unicode字符)作为其默认编码的终端/环境中运行它?我从
find
命令中假设您正在Linux或macOS系统上运行 - 如果是这样,从shell中,您可以检查Python认为默认编码是什么:
$ python -c "import locale; print(locale.getdefaultlocale())"
这是我的终端发出的,它使用 UTF-8 作为默认编码:
('en_US', 'UTF-8')
最后,如果这没有帮助,您可能希望获得更多信息,而不仅仅是错误消息中显示的摘要文本 - 您可以尝试在本地 gsutil 安装(在<path-to-gsutil>/gslib/commands/rsync.py
文件中)在我上面链接的行附近添加一些额外的print
语句。理想情况下,您希望查看整个堆栈跟踪以查看错误的来源,因此在该except:
块的正文中添加类似print(traceback.format_exc())
的内容会很有用。