websvn的中文亂碼問題的解決

來源:互聯網
上載者:User
websvn是subversion的一個php編寫的web介面,但使用中發現該程式對svn中的中文目錄、注釋顯示不正常,原有的中文目錄顯示成了/?/230/?/153/?/88樣子的亂碼。

由於處於安全考慮,這個系統中對php做了open_dir的限制,所以沒有使用apt來安裝websvn,而是從websvn.tigris.org下載了1.6.1的版本,最新的2.0的版本和系統預設的svn1.4.2不相容沒法使用。

經過跟蹤調試,發現websvn是通過php的popen函數來調用svn命令並讀取傳回值,但是這個返回的內容本身就是亂碼的。再進一步測試,發現popen函數的環境變數中LANG設定為C,這樣執行的svn命令,中文資訊就變成了/?/230/?/153/類的亂碼了。

知道了問題所在,修改起來就很容易了:

先修改下config.inc檔案中的編碼設定
$config->setInputEncoding("utf-8"); 
$config->setOutputEncoding("utf-8");

在修改下command.inc中的函數
function quoteCommand($cmd, $redirecterr)
{
   global $config;
 
   if ($redirecterr)
      $cmd .= " 2>&1";
 
   // On Windows machines, the whole line needs quotes round it so that it's
   // passed to cmd.exe correctly
  
   if ($config->serverIsWindows)
      $cmd = "/"$cmd/"";
  
   return "export LANG=zh_CN.UTF-8 && " . $cmd;
}

經過這樣簡單修改,並清除了cache中的緩衝,在重新整理顯示,嗯,一切正常了。

調試環境是debian4.0  subversion 1.4.2  websvn1.6.1  apache2.2.3 php5.2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.