Php Svn钩子编码问题

Php Svn钩子编码问题,php,svn,hook,post-commit,Php,Svn,Hook,Post Commit,我创建了一个svn钩子,它调用一个php脚本来发送一些电子邮件。 问题是我得到了不正确的编码信息(我想这就是你所说的) 这是我在邮件中得到的信息: 修改文件 -/base/view.php 玛斯乌玛斯酒店 实施?\195?\167?\195?\181es 这就是钩子调用脚本时得到的结果。 但是如果我直接调用脚本(指定版本),我会得到以下结果: 修改文件 -/base/view.php 现实主义者 邮件以iso-8859-1编码发送(尝试utf-8并获得相同的结果) 有人知道我可以用什么来纠正这个

我创建了一个svn钩子,它调用一个php脚本来发送一些电子邮件。 问题是我得到了不正确的编码信息(我想这就是你所说的)

这是我在邮件中得到的信息:

修改文件 -/base/view.php

玛斯乌玛斯酒店 实施?\195?\167?\195?\181es

这就是钩子调用脚本时得到的结果。 但是如果我直接调用脚本(指定版本),我会得到以下结果:

修改文件 -/base/view.php

现实主义者

邮件以iso-8859-1编码发送(尝试utf-8并获得相同的结果)

有人知道我可以用什么来纠正这个问题吗?

谢谢,这可能与执行环境的区域设置有关。当您自己运行它时,它位于您的区域设置中,并且可能正确处理特殊字符


我怀疑钩子是在subversion服务器区域设置中执行的,该区域设置可能是“C”区域设置,也可能是一些不知道如何处理这些字符的区域设置。

您需要在提交后钩子中导出LANG,否则svnlook将在为您的SVN用户设置的区域设置中输出注销:

(在提交后,在调用脚本之前)

export LANG=“fr\u fr.UTF-8”


当然,您可以根据需要调整语言环境,只要它是utf8。

如果你粘贴了钩子和PHP脚本的相关部分,这会很有帮助。如果你发布了两封电子邮件的十六进制转储,这也会很有帮助——一个缺失/额外的字节肯定会帮助人们解决问题。@JXG我如何从gmail邮件中获得十六进制转储?我真的不知道。不过,你可以点击下箭头(回复旁边)并选择“显示原件”。这将显示(IIUC)电子邮件的实际传输情况。在我的多语言电子邮件中,我看到“内容类型:text/plain;charset=UTF-8内容传输编码:base64”——您可能会看到类似的内容。我认为我对十六进制转储的看法是错误的,但base64比较也会有所帮助。另外,试着看看在非gmail邮件中是否会遇到同样的问题。*当您将php脚本与钩子分开运行时会发生什么?你还有那些编码问题吗?*您是否尝试过从命令行运行钩子脚本?您是否仍然存在相同类型的编码问题?