BLOGTIMES
2008/12/25

ファイル名のエンコードをUTF-8にする

  linux  perl  windows  charset 
このエントリーをはてなブックマークに追加

Windows標準の文字コードは SJIS なので、Linux に FTP などでうっかりファイルをアップロードするとファイル名が SJIS になることがあります。数個であればアップロードし直したり、手動でファイル名を変更すれば問題ないのですが、今回は訳あってこれをなんとか UTF-8 に変換する必要があったのでいろいろと苦労することになりました。結論から言うと、convmvというperl スクリプトを使うと一撃でファイル名のエンコード変換ができることがわかりました。

convmv - converts filenames from one encoding to another

convmv is meant to help convert a single filename, a directory tree and the contained files or a whole filesystem into a different encoding. It just converts the filenames, not the content of the files. A special feature of convmv is that it also takes care of symlinks, also converts the symlink target pointer in case the symlink target is being converted, too.

Windows <-> Linux で日本語のファイル名をやりとりする場合には知っておくと便利かもしれません。
特に Zip なんかのアーカイブの中に日本語のファイルが入ってしまっていたりすると、転送時には気がつかなかったりしますからね。

インストール

アーカイブを解凍してmake installするだけなので、特に難しいことありません。

簡単な使い方

とりあえずSJISのファイル名をUTF-8にしたい場合には下記のコマンドを実行します。
そうすると、ファイル名がどのように変換されるかの一覧が表示されます。(この時点ではまだ変換されない)

convmv -f sjis -t utf8 *

実際の変換を行うには--notestオプションをつけてやります。

convmv --notest -f sjis -t utf8 *

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2852
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン