SOBA Project, Inc.で管理しているSOBAフレームワークなどすべてのソースコードはSubversionで管理しています。ソースコードの文字コードは多種多様で、Shift-JIS、UTF-8、EUCなど様々な文字コードが使われています。現在はEUCコードはなくなりましたが、いまだにShift-JISとUTF-8が混在していて、管理が大変になってきています。
Shift-JISは主にSOBAのクライアントソース側で使われていますが、今回、思い切って、すべてのソースコードをUTF-8で統一しました。
以下のようにフォルダAAAの下にShift-JISで書かれたaaa.properties.sjisというプロパティファイルとbbb.javaというJavaのファイルが存在するとします。
AAA/aaa.properties.sjis
AAA/BBB/bbb.java
これらのファイルを一括で変更する方法を考えます。
まず、Shift-JISからUTF-8に変更するには著名なnkfを使います。nkfをパスの通ったフォルダにおきます。
次につぎのようなシェルスクリプト sjis2utf8.shを作ります。
----------------------------------------------------------------
#!/bin/sh
# convert sjis to utf8
#
# sjisファイルをutf8ファイルに変更する。
# また、ファイル名にsjisが含まれていたらutf8に変更する
if test $# -ne 1
then
echo "Usage:sjis2utf8.sh (file name)"
exit
fi
for file1 in $*
do
#絶対パスなしでファイル名を取り出す。ファイル名にsjisが含まれていたらutf8に変更
file2=`echo $file1 | awk 'BEGIN {FS="/"};{print $NF}' | sed 's/sjis/utf8/g'`
#絶対パスつきでファイル名を取り出す。ファイル名にsjisが含まれていたらutf8に変更
file3=`echo $file1 | sed 's/sjis/utf8/g'`
#UTF-8に変更する
nkf -Sw80 $file1 > /tmp/$file2
#元ファイルは削除して、変更されたファイルをコピーする
rm $1
cp /tmp/$file2 $file3
rm /tmp/$file2
done
----------------------------------------------------------------
一括変更は以下のように行います。
$ find . \( -name "*.java" -or -name "*.sjis" \) -print | xargs -i -t sjis2utf
8.sh {}
sjis2utf8.sh ./AAA/aaa.properties.sjis
sjis2utf8.sh ./AAA/BBB/bbb.java
これで、UTF-8書かれたプロパティファイルとUTF-8で書かれたjavaのソースコードになります。
AAA/aaa.properties.utf8
AAA/BBB/bbb.java