尝试从SVN日志命令解析XML时出错

时间:2010-11-15 16:25:52

标签: php svn exec

我正在尝试构建一个简单的下拉列表,它将显示特定文件的修订版。从选择的选项中,我使用jQuery获取该修订中包含的当前文本并填充textarea(使用svn cat)。

我的HTML文件中的标题:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

我的shell命令:

svn log --xml "file:///C:/Documents and Settings/username_here/Desktop/svnrepo/Web/trunk/my_file.php"

XML解析调用:

$xmlData = simplexml_load_string(utf8_decode(trim(shell_exec($cmd))));

此时,我收到此错误:

  

输入不正确的UTF-8,请注明   编码!字节:0xE9 0x20 0xE7 0x61

- 我正在使用utf8_decode函数来帮助正确显示字符。例如,“é”显示为“Ô“

- 如果我将元标记更改为utf-8,则会正确显示。但是,我需要为每个组织集规则提供ISO-8859-1

- 我正在使用file:///协议作为临时措施来调用我的SVN仓库

有趣的是,我的jQuery调用只需要一个标头调用来正确显示字符(shell_exec(svn cat ...)):

header('Content-type: text/html; charset=ISO-8859-1') ;

1 个答案:

答案 0 :(得分:1)

根据评论,我在读取XML时删除了utf8_decode函数,并在显示文本时应用了它。

echo '<select id="selID">';
foreach ($xmlData->logentry as $entry){
 echo utf8_decode('<option value="'.$entry['revision'].'">rev '.$entry['revision'].' by '.$entry->author.' @ '.substr($entry->date,0,19).' '.$entry->msg.'</option>');
}
echo '</select><input type="button" id="svn_select" value="Load revision" />';

现在就像魅力一样。