日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux svn log 乱码,解决p42svn中文log乱码的问题

發布時間:2023/12/9 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux svn log 乱码,解决p42svn中文log乱码的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現象:

將perforce代碼庫遷移至SVN時log亂碼。

p42svn.pl在windows下運行至"-|"時會報錯,于是安裝了linux虛擬機,從虛擬linux中運行p42svn.pl生成dump文件,再傳至windows下用svnadmin load。可是在svn查看log時,中文卻是顯示亂碼。

解決過程:

最開始是懷疑perl對中文的支持,于是在網上查資料,了解到perl是用utf8字符流,看了《Perl對中文的處理問題》http://blog.chinaunix.net/u2/70049/showart_1225418.html才明白,于是修改p42svn.pl。

文件剛開始部份加上

use Encode;

$result{'log'}? = $change->{'desc'} ;

改成

$result{'log'}? = decode("GBK", $change->{'desc'} );

這時生成的dump文件卻無法load。

測試二, 用svnadmin dump出帶中文log的記錄,再load進版本庫是正常的。比較查看svnadmin與p42svn.pl生成的dump文件,發現log部分一樣,但是Prop-content-length、Content-length與log的V值不一樣。在網上游蕩了半天,看到一篇文章《PERL unicode》http://longer.spaces.eepw.com.cn/articles/article/item/48773才知道是perl取出的字符數而不是字節數,而svnadmin卻是要求字節數的。于是再次修改p42svn.pl

$result .= sprintf("V %d/n%s/n", length($val), $val);

前加上

Encode::_utf8_off($val);

my $ppty_len = length($ppty_txt) + 1;

前加上

Encode::_utf8_off($ppty_txt);

這樣就解決log亂碼的問題。

總結

以上是生活随笔為你收集整理的linux svn log 乱码,解决p42svn中文log乱码的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。