免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7262 | 回复: 2
打印 上一主题 下一主题

PHP调用SVN命令出现字符编码错误的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-13 14:28 |只看该作者 |倒序浏览
最近一个项目,我用PHP调用svn,做一些comit, add, updte等操作,
函数很简单,就是一个exec
比如提交一个文件:svn_api.php

$cmd = "/usr/bin/svn ci Tulips5.jpg -m 'add file' --config-dir /home/svnroot/.subversion 2>&1";
$re = exec($cmd, $out_put, $ret);
var_dump($out_put);
但是如果有包含中文字符的文件的时候,而且是通过crontab启动的时候,就会有下面的报错出现:
array(3) {
  [0]=>
  string(60) "svn: Error converting entry in directory '302/2849' to UTF-8"
  [1]=>
  string(5 "svn: Can't convert string from native encoding to 'UTF-8':"
  [2]=>
  string(72) "svn: 302/2849/?\232?\143?\138?\232?\138?\1773.jpg"
}

但是如果在SecureCRT终端直接执行
/opt/lampp/bin/php svn_api.php
这样执行就没有问题。


没有思路,不知道该怎么去解决,网上查的,大部分都是说字符编码的问题,设置一下LC_ALL, LC_LANG之类就可以解决,但是像如果靠crond服务启动的,无终端的情况,就不知道要怎么设置这个字符编码,试过调用PHP的setlocale(LC_ALL, "en_US.utf-8";还有直接$r = exec('export LC_ALL="en_US.UTF-8"', $out, $ret); 貌似都还是不行。
有知道的大虾请告诉一下。

论坛徽章:
0
2 [报告]
发表于 2014-05-28 16:56 |只看该作者
可以这样

error_reporting(E_ALL);
$handle = popen(' LANG=en_US.UTF-8 svn update  --username dev-lin --password teste123  --config-dir /home/wwwroot/.subversion  /home/wwwroot/yiiu/ 2>&1','r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);

论坛徽章:
0
3 [报告]
发表于 2014-06-09 12:26 |只看该作者
convmv 转换 中文文件名
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP