当来自 AWS Lambda 的 运行 脚本时出现 utf 错误,但当来自手动 ssh 的 运行 时则不会
utf errors when running script from AWS Lambda but not when running from manual ssh
我有一个 python AWS Lambda 监听 github webhook。当它收到一个时,它会通过 SSH(通过 paramiko)连接到远程服务器,然后 运行s 一个脚本来重新生成一个静态网站。
该网站的某些文件名包含 utf8 字符。重新生成失败,因为它无法写入包含这些字符的文件。
它是一个 python 静态站点生成器,它会输出此错误。
'ascii' codec can't encode character '\xe1' in position
但是,如果我手动 ssh 进入服务器并 运行 使用完全相同的脚本,它会完美运行。
我是否需要以某种方式在 lambda 中配置 paramiko 以允许使用 utf8?还有什么可能导致这种差异?
感谢您的帮助。
已解决。当我通过 shell 登录时,我认为它传递了我的 LANG 和 LC_ALL 环境变量,它们设置为 en_GB.utf8
。当 AWS 上的 paramiko 登录时,它使用 POSIX
而不是 utf8。解决方案是在我通过 paramiko 发送的所有命令前加上 LANG=en_GB.utf8 LC_ALL=en_GB.utf8
我有一个 python AWS Lambda 监听 github webhook。当它收到一个时,它会通过 SSH(通过 paramiko)连接到远程服务器,然后 运行s 一个脚本来重新生成一个静态网站。
该网站的某些文件名包含 utf8 字符。重新生成失败,因为它无法写入包含这些字符的文件。
它是一个 python 静态站点生成器,它会输出此错误。
'ascii' codec can't encode character '\xe1' in position
但是,如果我手动 ssh 进入服务器并 运行 使用完全相同的脚本,它会完美运行。
我是否需要以某种方式在 lambda 中配置 paramiko 以允许使用 utf8?还有什么可能导致这种差异?
感谢您的帮助。
已解决。当我通过 shell 登录时,我认为它传递了我的 LANG 和 LC_ALL 环境变量,它们设置为 en_GB.utf8
。当 AWS 上的 paramiko 登录时,它使用 POSIX
而不是 utf8。解决方案是在我通过 paramiko 发送的所有命令前加上 LANG=en_GB.utf8 LC_ALL=en_GB.utf8