解决svn post-commit 中文乱码问题
2008-01-17 12:52
417 查看
svn hooks 目录下缺省的 post-commit 脚本模板通过调用 commit-email.pl 来分析当次提交的内容并根据参数设置把修改信息 email 给项目相关人员。脚本支持使用 -m 参数进行正则过滤,当修改不同目录的内容时可以分别 email 给不同的邮件地址。
不过当项目中存在中文文件名的时候,由于 svn 会把非ascii码字符转义成形如 ?/325 的格式,所以在发出来的 email 里面这些中文都变成了不可读的数字。
要把这些编码转回原来的字符,只需要在 commit-email.pl 脚本处理 email body 信息的地方加上一段转码处理即可。比如在 my @difflines; (行487) 的前面加上:
for (my $i=0; $i<@body; ++$i){
my @rsa = split( //?///, $body[$i] );
$body[$i] = "";
foreach my $val (@rsa) {
$val =~ /(^[0-9]{3})(.*)/;
if(defined $1 and $1 gt 0){
#print "/n[".$1 . "," . $2."]";
$body[$i] .= chr($1) . $2;
}
else{
$body[$i] .= $val;
}
}
}
把之前 push 到 @body 变量的所有内容重新进行处理,发现 ?/ 后面跟三个数字就替换为相应的字符。
另外在 post-commit 模板脚本中没有写 commit-email.pl 的绝对路径,需要写上才能正常被调用。
不过当项目中存在中文文件名的时候,由于 svn 会把非ascii码字符转义成形如 ?/325 的格式,所以在发出来的 email 里面这些中文都变成了不可读的数字。
要把这些编码转回原来的字符,只需要在 commit-email.pl 脚本处理 email body 信息的地方加上一段转码处理即可。比如在 my @difflines; (行487) 的前面加上:
for (my $i=0; $i<@body; ++$i){
my @rsa = split( //?///, $body[$i] );
$body[$i] = "";
foreach my $val (@rsa) {
$val =~ /(^[0-9]{3})(.*)/;
if(defined $1 and $1 gt 0){
#print "/n[".$1 . "," . $2."]";
$body[$i] .= chr($1) . $2;
}
else{
$body[$i] .= $val;
}
}
}
把之前 push 到 @body 变量的所有内容重新进行处理,发现 ?/ 后面跟三个数字就替换为相应的字符。
另外在 post-commit 模板脚本中没有写 commit-email.pl 的绝对路径,需要写上才能正常被调用。
相关文章推荐
- get/post时中文乱码问题的解决办法(转载)
- 解决Fiddler查看Post参数中文乱码的问题
- jquery向.ashx文件post中文乱码问题的解决
- get/post时中文乱码问题的解决办法
- struts2_Ajax_post_解决了中文乱码问题
- 解决Eclipse中SVN版本比较中文乱码问题
- HttpClient4.5.2版本中POST提交中文参数时乱码问题解决方法
- Struts2中解决POST请求和GET请求中的中文乱码问题
- 解决servlet中输出中文到浏览器以及post、get两种提交方法乱码问题
- 解决Eclipse中SVN版本比较中文乱码问题
- 解决问题:在使用springmvc的web.xml配置乱码拦截器之后接收的get或者post请求中文还是乱码
- svn commit-email自动发送邮件乱码问题的解决,以及自己写svn同步邮件脚本
- java 解决全站字符乱码(POST和GET中文编码问题)
- 解决Fiddler查看Post参数中文乱码的问题
- 解决全站字符乱码(POST和GET中文编码问题)
- get/post时中文乱码问题的解决办法
- 解决Spring Web MVC中POST中文乱码问题
- 从页面向后台(struts)post数据,中文乱码问题解决
- 解决post、get提交中文乱码问题
- JSP中,AJAX使用POST方式提交中文乱码问题解决