DelphiでShift-JIS→UTF-8ファイル変換|TEncodingを使ったコンソールアプリの作り方
このページでは、Delphiを使ってShift-JIS形式のテキストファイルをUTF-8形式に変換するコンソールアプリケーションの作成方法を紹介します。
TEncodingによる文字コード変換、FileExistsでのファイル存在確認、Readlnによる入力処理など、実用的なソースコードを交えて解説します。
Windowsのコマンドプロンプトから実行できるため、バッチ処理や自動化にも活用できます。
作成したプリケーションは、コマンドプロンプトから使用できます。
Delphiを起動して新規作成を行う
Delphiを起動し、ファイル→新規作成→その他・・・をクリックします。
左ペインの「Delphi プロジェクト」を選択し、
右ペインの「コンソール アプリケーション(コマンドラインアプリ)」をクリックし「OK」ボタンをクリックします。
ソースコードを記述する
以下の赤字部分のソースコードを記述してください。
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Classes;
var
stl:TStringList;
begin
//コンソールアプリケーション
try
{ TODO -oUser -cConsole メイン : ここにコードを記述してください }
if ParamCount=2 then //パラメータが2つの場合
begin
if not FileExists(ParamStr(1)) then
begin
writeln('指定されたSJIS変換元ファイルが存在しません');
//DOSのエラーレベルを出力する場合
//コマンドプロンプトから「echo %eorrorlevel%」で 1 が表示される
halt(1);
end
else
begin
//uses にSystem.Classesが必要
stl:=TStringList.Create;
try
try
stl.LoadFromFile(ParamStr(1),TEncoding.ANSI);
try
//BOM無しに設定する場合
stl.WriteBOM:=False;
//改行を\r\nにする場合
stl.LineBreak:=#13#10;
stl.SaveToFile(ParamStr(2),TEncoding.UTF8);
except
Writeln('変換先UTF-8ファイルに上書きできない、又はファイル名が有効でありません');
//DOSのエラーレベルを出力する場合
//コマンドプロンプトから「echo %eorrorlevel%」で 2 が表示される
Halt(2);
end;
except
Writeln('指定されたShift-JIS変換元ファイルを開くことが出来ません');
//DOSのエラーレベルを出力する場合
//コマンドプロンプトから「echo %eorrorlevel%」で 3 が表示される
Halt(3);
end;
finally
stl.Free;
end;
end;
end
else
begin
//実行時パラメータが2つでない時、使い方を表示します
Writeln('概要:');
Writeln(' Shift-JISファイルからUTF-8ファイルを変換生成します');
Writeln(' 既に変換先ファイルが存在している場合は上書きします');
Writeln('使い方');
Writeln(' Project1 変換元Shift-JISファイル名 変換先UTF-8ファイル名');
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
保存する
「ファイル」⇒「すべて保存(Ctrl+Shift+S)」を押します。
ファイル名を
sjis2utf8.dproj
で保存します。
コンパイルする
「プロジェクト」⇒「sjis2utf8をコンパイル」をクリックします。
実行してみる
Cドライブ直下に「test」フォルダを作成します。
コンパイルして生成した「sjis2utf8.exe」ファイル(プロジェクトフォルダの win32\debug フォルダ内にあります)を
c:\test フォルダにコピーします。
コマンドプロンプトを起動します。(スタートボタン⇒キーボードから「cmd」と入力し「コマンドプロンプト」をクリック)
コマンドプロンプトから以下を入力してカレントディレクトリを移動します。
cd /D c:\test
コマンドプロンプトから以下を入力して、Shift-JISのテキストファイル「a.txt」を作成します。
echo 日本語ファイルを作成します > a.txt
コマンドプロンプトから以下を入力して、Shift-JISのテキストファイル「a.txt」からUTF-8のファイルに変換します。
sjis2utf8.exe a.txt b.txt
コマンドプロンプトから以下を入力してUTF-8のファイル「b.txt」を表示してみます。UTF-8に変換されているので、文字化けしているはずです。
type b.txt
