« Too many open files その2 | メイン | Microsoft Spy++ »

ソースコードのUTF-8化

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

トラックバック

このエントリーのトラックバックURL:
http://soba-project.info/cgi/mt/mt-tb.cgi/128

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年12月25日 20:51に投稿されたエントリーのページです。

ひとつ前の投稿は「Too many open files その2」です。

次の投稿は「Microsoft Spy++」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type