1

execおよびSVNログコマンドを使用して、当社の内部WebページでSVNからいくつかの情報を取得しています。Webページは要件によりISO-8859-1ですが、SVN-server / exec outpuはUTF8であり、特殊文字は「通常の」エンコードではなく10進数でエンコードされます。

これにより、私が知る限り、UTF8_decodeまたは同様の関数を使用できなくなります。また、リターンがどのようにフォーマットされているかを正確に把握することはできません。そうしないと、str_replaceが当面の回避策として機能します。たとえば、私が見る限り、äは?\ 195?\ 164で表されますが、出力でその文字列を見つけて置き換えることができないため、他に何かが起こっている可能性があります。

私のSVNサーバーはCentOSであり、犯人がどこかにいる可能性がある場合、WebサーバーはApacheを実行しているDebianです。

擬似コード

exec('svn log PATH' , $output);
foreach ($output as data){
    $data = str_replace(array('?\195?\165', '?\195?\182'), array('å','ö'), $data);
    echo $data . '<br>';
}

foreach ($output as data){
    $data = utf8_decode($data);
    echo $data . '<br>';
}

foreach ($output as data){
    $data = mb_convert_encoding($data, 'ISO-8859-1', 'UTF-8');
    echo $data . '<br>';
}

エコーされる文字列の例は「Buggfixf?\ 195?\ 182r 7.1.34」ですが、「Buggfixför7.1.34」である必要があります

4

0 に答える 0