2010年10月22日金曜日

svnでどんなに頑張っても"can't convert string from 'utf-8' to native encoding"エラーが治らない

どうも、俺@残業です。

svnコマンドでimport chekcout commit updateコマンドを打った時によく出るエラーで
Can't convert string from native encoding to 'UTF-8':
Valid UTF-8 data.
ネイティブのエンコーディングから'UTF-8'に文字列を変換できません
有効なUTF-8のデータ(16進数: )の後に無効なUTF-8文字列(16進数)
のようなエラーがあります。

だいたいの原因が、存在するファイルに日本語ファイル名のものがある場合に発生する事があるのですが、おそらくlinuxエンジニアはやらないのでwindowsで誰かが作ったファイルが存在していることだと思います。

大抵の場合は環境変数 LC_CTYPE= の設定で対応できます。
$ export LC_CTYPE=ja_JP.utf8


ja_JP.utf8なロケールが存在しない場合は(まずないと思いますが)
locale -a | grep ja
ja_JP
ja_JP.eucjp
ja_JP.sjis
ja_JP.ujis
japanese
japanese.euc
入れちゃいましょう。
# localedef -f UTF-8 -i ja_JP ja_JP.utf8


それでも同じエラーが出る場合は
$ export LC_ALL=ja_JP.utf8
やっちゃいましょう。

それでもエラーが出る場合は思い切って
$ export LC_CTYPE=ja_JP.sjis
をやってみてください。
ja_JP.sjisなロケールがない場合は
# localedef -f SJIS -i ja_JP ja_JP.sjis
で追加してください。

LC_CTYPE=ja_JP.sjisでやれば回避できることもあります。

最後の手段は
$ vim ~/.subversion/config
log-encoding=utf8
です。

これでもダメなら日本語ファイル名のファイルをsvn管理下から外してください!


以上どぇぇぇぇぇぇす。

1 件のコメント:

匿名 さんのコメント...

最後の手段で助かりました。お礼カキコ