我有一个SVN钩子,它执行svnlook并通过电子邮件发送提交消息。当我在提交消息中有变音符号(ä,ü,ö或ß)时,我只得到“?\ 195?\ 159?\ 195?\ 182”输出而不是变音符号。
如果我通过shell执行脚本,一切都很好。如果subversion执行了钩子,那么变音符号就会被加扰。我尝试使用
从post-commit钩子执行邮件脚本LC_ALL="en_US-utf8" "$REPOS"/hooks/mailer.py "$REPOS" "$REV"
在我的邮件程序中,我用
执行svnlook命令cmd = 'export LC_ALL="en_US-utf8" && svnlook info ' + sys.argv[1]
我还使用
在mailer.py中设置了语言环境locale.setlocale(locale.LC_ALL, 'en_US-utf8')
我得到的唯一错误信息是:
svnlook: warning: cannot set LC_CTYPE locale
svnlook: warning: environment variable LC_ALL is en_US-utf8
svnlook: warning: please check that your locale name is correct
有人有想法吗?
答案 0 :(得分:3)
根据上述问题的顺序获得答案需要一些步骤
Content-Type
(charset=
部分,mime-type在此处无关紧要)和(可选)Content-Transfer-Encoding
。我假设并怀疑 charset 定义与实际状态(us-ascii vs UTF8)不匹配,在本例中为MTA和MUA可能会给你描述结果。我不知道,您是否可以在mailer.py中重新定义邮件标题,但必须创建包含正确标题的邮件内容类型Content-Type: text/plain; charset=UTF8
生成电子邮件时,请测试您的MUA以处理UTF8编码的电子邮件(可以独立于之前的结果测试移至p.0)答案 1 :(得分:0)
您必须将以下行添加到您的钩子脚本中:
#!/bin/sh
export LANG="de_DE.UTF-8"
有同样的问题,这对我有用。