我对静态站点的构建过程如下:
public
文件夹public
文件夹并重命名为gzipped
。gzipped
文件夹中,我运行以下代码:find . -type f -exec gzip "{}" \; -exec mv "{}.gz" "{}" \;
当我在我的.md
文件中包含一个€字符,如下所示,那么我得到以下错误。显然它不喜欢在我的- €1000
文件中写的像.md
这样的特殊字符(我猜破折号-
是罪魁祸首):
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
命令,主要是由于你得到的错误消息,这来自这行代码:
看了那里的代码,我不确定为什么gsutil会尝试使用ASCII编解码器。我最好的猜测是:
gsutil version
来检查。find
命令中运行Linux或macOS系统 - 如果是这样,从您的shell,您可以检查Python认为默认编码是什么:$ python -c "import locale; print(locale.getdefaultlocale())"
这是在我的终端中发出的,它使用UTF-8作为默认编码:
('en_US', 'UTF-8')
最后,如果这没有帮助,您可能希望获得比错误消息中显示的摘要文本更多的信息 - 您可以尝试在我上面链接的行附近添加一些额外的print
语句,在您的本地gsutil安装(在<path-to-gsutil>/gslib/commands/rsync.py
文件中)。理想情况下,您需要查看整个堆栈跟踪以查看错误的来源,因此在print(traceback.format_exc())
块的主体中添加类似except:
的内容将非常有用。