C++Builder XE3でファイルの文字コードを変換する

指定したファイルを指定した文字コードで読み込み、
指定した文字コードで指定したファイル名に保存します。

#include <System.IOUtils.hpp>

/**
 * テキストファイルの文字コードを返還する
 * @param SourceFileName 変換元のファイルのファイル名
 * @param SourceEncoding 変換元のファイルのエンコーディング
 * @param TargetFileName 変換したファイルのファイル名
 * @param TargetEncoding 変換したファイルの文字コード
 */
void ConvertFileEncoding(const UnicodeString SourceFileName, TEncoding* SourceEncoding,
  const UnicodeString TargetFileName, TEncoding* TargetEncoding)
{
  TFile::WriteAllText(
    TargetFileName,
    TFile::ReadAllText(SourceFileName, SourceEncoding),
    TargetEncoding);
}

使用例:EUC-JPのファイルをUTF8に変換します。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TEncoding* EucJp = TEncoding::GetEncoding(20932);
  TEncoding* Utf8 = TEncoding::UTF8;
  ConvertFileEncoding("C:\\data\\euc.txt", EucJp, "C:\\data\\utf8.txt", Utf8);

最近のC++Builderはライブラリが充実して、簡単に書けるようになりましたね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です