こんにちは。よっしーです。
今日は文字コードについてのお話しをしたいと思います。
今まで、いろいろなプロジェクトに携わってきましたが、
開発環境、実行環境などによって、ソースファイルの文字コードが決まっており、
開発者が文字コードを「意識する」という場面がよくあります。
使用するテキストエディタ、ツール等によるところがありますが、
新規作成したソースファイルを保存する際、デフォルトの文字コードが決まっており、
そのデフォルトの文字コードが、期待する文字コードになっていないと、
知らず知らずのうちに、プロジェクトに沿わない文字コードで
ソースファイルを生成してしまうこととなります。
チームで開発をしていると、ソースファイルを集約したときに、
ファイル毎に文字コードがばらばら。。。なんてことも、よくありますよね。
で、そういったとき、ソースファイルの文字コードを正しいものに「変換」するのですが、
Windows でいろいろと文字コード変換ツールを使ってはみたものの、
あまりしっくりくるものがなく、いろいろと試した結果、Linuxコマンドを
使用して変換する。というスタイルに落ち着きました。
なので、今回は文字コード変換の方法についてご紹介したいと思います。
(例のごとく、Ubuntu環境でのやり方となります)
はじめに、nkf というコマンドを使用しますので、インストールします。
nkf コマンドをインストール
$ apt-get install nkf |
あとは、いろいろなコマンドとを組み合わせて使います。
まずは、現在のファイルがどのような文字コードになっているかを確認してみましょう。
複数ファイルの文字コードをコマンド一発で確認
$ find . -type f | xargs nkf --guess | column -s: -t |
出力結果
↓ファイル名 | ↓文字コード |
./inc/client_recv.h | UTF-8 (BOM) (LF) |
./inc/client_send.h | UTF-8 (BOM) (LF) |
./inc/main.h | UTF-8 (BOM) (CRLF) |
./inc/svc_recv.h | Shift_JIS (CRLF) |
./inc/svc_send.h | Shift_JIS (CRLF) |
./src/client_recv.c | UTF-8 (LF) |
./src/client_send.c | UTF-8 (LF) |
./src/main.c | UTF-8 (BOM) (CRLF) |
./src/svc_recv.c | Shift_JIS (CRLF) |
./src/svc_send.c | Shift_JIS (CRLF) |
ファイルによって文字コードや改行コードがバラバラですね。。。
で、これを1つの文字コードに統一するため、変換をかけます。
複数ファイルの文字コードをコマンド一発で変換
※ Shift-JIS、改行コード=CR+LF にする場合
$ find . -type f | xargs nkf --overwrite -s -Lw |
※ UTF-8、改行コード=LF にする場合
$ find . -type f | xargs nkf --overwrite --oc=UTF-8 -Lu |
※ UTF-8(BOM付)、改行コード=LF にする場合
find . -type f | xargs nkf --overwrite --oc=UTF-8-BOM -Lu |
UTF-8、改行コード=LF の変換をかけた後、文字コード確認をしてみると、、、
出力結果
./src/client_recv.c | UTF-8 (LF) |
./src/client_send.c | UTF-8 (LF) |
./src/main.c | UTF-8 (LF) |
./src/svc_recv.c | UTF-8 (LF) |
./src/svc_send.c | UTF-8 (LF) |
./inc/client_recv.h | UTF-8 (LF) |
./inc/client_send.h | UTF-8 (LF) |
./inc/main.h | UTF-8 (LF) |
./inc/svc_recv.h | UTF-8 (LF) |
./inc/svc_send.h | UTF-8 (LF) |
キレイに文字コードがそろってますね!
ファイルをテキストエディタで開いて、文字コードを指定し保存する。
というやり方でもよいですが、ファイルの数が多くなってくると、
かなり手間になってしまうので、そんな時はコマンド一発で一気にやってしまいましょう!
ではまた~。
0 件のコメント:
コメントを投稿