[RHEL6] Redhatでwindowsから送ったファイルのファイル名が文字化けする件

Windows上での日本語ファイルがLinuxに送ると文字化けしちゃった。それを元に戻したい!!って思って、その方法を調べました。
オチから言うと、今から書くことをやらなくても、WinSCPなどの設定をきちんとしてやれば文字化けしないみたいです。悲しい(笑)

文字コードが違う

WindowsはSJISをベースにしたcp932という文字コードなのに対して、Redhat6の文字コードはUTF-8なのでファイル名は「invalid Encoding」というエラーになっているようでした。

余談

Redhatのファイル名の文字コードは以下のように確認できます。
13行目の通り、デフォルトでUTF-8が指定されているみたいです。

# cat /etc/xdg/user-dirs.conf 

# This controls the behaviour of xdg-user-dirs-update which is run on user login
# You can also have per-user config in ~/.config/user-dirs.conf, or specify
# the XDG_CONFIG_HOME and/or XDG_CONFIG_DIRS to override this
#

enabled=True

# This sets the filename encoding to use. You can specify an explicit
# encoding, or "locale" which means the encoding of the users locale
# will be used
filename_encoding=UTF-8

ファイル名の変更:convmv

転送時にうまくいかないことはわかったところで、redhatに転送後にファイル名を変換するツールを見つけました!
convmvってやつです。昆布ムーブ、ですかね?convって何の略なんだろう。。

# yum install convmv

…
Complete!

(変換できるかの確認)
# convmv -r -f cp932 -t utf8 *

(実際に変更)
# convmv -r -f cp932 -t utf8 * --notest

「–notest」をつけると実際に変更されます。つけないと、とりあえず、変更できるかの状況確認のみ。
「-r」は再帰的にってことで、「-f」はfromで「-t」はToってところでしょうか?
そういうわけで、再帰的にcp932からutf-8に変更してます。

余談

CentOSのレポジトリにはconvmvは存在しなかったので、rpmforgeからいただきました。
rpmforgeのレポジトリの追加方法は以下を参照。

おしまい

私はWinSCP使ってファイル転送してるんですが「あれ?こんなことなら最初からWinSCPに変換機能があればいいんじゃない?」と思いました。
そして、改めてその観点で調べると、きちんと設定をすればWinSCPで送っても文字化けしないことがわかりました…という遠回りの話。

近道はこちら↓
[WinSCP] 転送時に日本語ファイル名が文字化けするのを防止する方法

タイトルとURLをコピーしました