Google云构建触发器静态站点:'ascii'编解码器无法对字符进行编码

问题描述 投票:0回答:1

我对静态站点的构建过程如下:

  1. 我创建了public文件夹
  2. 我复制public文件夹并重命名为gzipped
  3. gzipped文件夹中,我运行以下代码:find . -type f -exec gzip "{}" \; -exec mv "{}.gz" "{}" \;
  4. 然后我推送我的仓库并自动触发构建。

当我在我的.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

google-cloud-platform ascii gzip gsutil static-site
1个回答
0
投票

当你说“推送到我的仓库”时,我假设你正在使用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')

最后,如果这没有帮助,您可能希望获得比错误消息中显示的摘要文本更多的信息 - 您可以尝试在我上面链接的行附近添加一些额外的print语句,在您的本地gsutil安装(在<path-to-gsutil>/gslib/commands/rsync.py文件中)。理想情况下,您需要查看整个堆栈跟踪以查看错误的来源,因此在print(traceback.format_exc())块的主体中​​添加类似except:的内容将非常有用。

© www.soinside.com 2019 - 2024. All rights reserved.