svn: Can't convert string from native encoding to 'UTF-8'

人にサーバにftpでアップロードさせたファイルをsvn importしたところ

svn: Can't convert string from native encoding to 'UTF-8'

なんだー と思って調べたらファイル名がかなりやな感じになってた。SHIFT_JISっぽい…

LANG=ja_JP.SHIFT_JIS

とした上で svn import してみたが、今度は別のところで同じエラー。何でだろうと思って

ls hoge/hoge/エラーの出たフォルダ/ | iconv -f SHIFT_JIS -t UTF-8

としてみたらコンバートできない。iconv -l で見てみると SJIS-WIN とかを発見。

ls hoge/hoge/エラーの出たフォルダ/ | iconv -f SJIS-WIN -t UTF-8

としてみると丸数字とか使ってやがる…

export LANG=ja_JP.SJIS-WIN

とかやっても無駄っぽいので調べてみたら、localedefとかでlocale作るのな。

 sudo localedef -f SJIS-WIN -i ja_JP ja_JP.SJIS-WIN
キャラクタマップファイル `SJIS-WIN' が見つかりません: そのようなファイルやディレクトリはありません

orz...キャラクタマップファイルって何だろう。しかたないのでほかので試してみる。

sudo localedef -f SHIFT_JISX0213 -i ja_JP ja_JP.SJISX0123
キャラクタマップ `SHIFT_JISX0213' は ASCII 互換ではありません, ロケールは ISO C に従っていません

とか言われたけどなんとかできたみたい。

LANG=ja_JP.sjisx0123 svn import -m 'import' file:///var/svn/hoge

とやると、なんとか動いているっぽい(20Gインポート中…)LANGがsjisなのでimportしてます的文字列が文字化けしている。幸いというか当然というかscreen上で実行していたので

ctrl-a :encoding sjis utf8

で、ちゃんと日本語が表示された。
朝になって失敗してたら追記するかも。