[Delphi] BOM無しUTF-8で保存






トップページへ

※全てのDelphi(楽天市場で探すamazonで探す)で動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます

サンプル ※説明に必要な部分しか記述していません。

 

下記のサンプルとは別に

System.AnsiToUtf8

を使う方法もあります。詳しくは公式サイトをご覧下さい。


サンプル TEncoding.UTF8を使う方法

「TEncoding.UTF8」を使って保存し

out_list.SaveToFile(‘任意のファイル名’, TEncoding.UTF8);

そのファイルをメモ帳で確認すると「UTF-8(BOM 付き)」として保存されています。

 

そこで下記のサンプルがBOMなしの方が必要な場合に「BOMなしUTF-8」として保存する方法です。

このコードは関係する部分のみです。

なお、ポイントは「TEncoding.GetEncoding(CP_UTF8)」と「SaveToFile のエンコード部分」です。


    Enc: TEncoding;

begin
        in_list := TStringList.Create;
        out_list := TStringList.Create;
        Enc := TEncoding.GetEncoding(CP_UTF8);
      try

        //ANSIで読み込む
        in_list.LoadFromFile('任意のファイル');
        //元々のファイルが UTF-8 の場合はこちら↓。UTF-8で読み込む
 
//      in_list.LoadFromFile('任意のファイル', Enc);

        out_list.Text := in_list.Text;

        //UTF-8で保存する
        out_list.SaveToFile('任意のファイル名', Enc);

      finally
        Enc.Free;
        out_list.Free;
        in_list.Free;
      end;

同様にメモ帳で確認すると、「UTF-8」(BOMなし)として保存されていました。

 

ちなみに、Windowsユニットで

CP_UTF8 = 65001;

と定義されています。

そして、このコードは下記のサイトを参考にさせて頂きました(謝辞)。

 

参考サイト

■Delphi 2009 とUnicode : Part II

・Delphi 2009 でのUnicode の扱い方と基本的な Unicode の構造について解説します。

https://docwiki.embarcadero.com/Support/ja/Delphi_2009%E3%81%A8Unicode:Part_II

 






関連記事
Delphi メニュー

[Delphi]起動時に「Setup.exeの実行時にエラーが発生しました」と表示

[Delphi]新元号・令和の影響

[Delphi]名前が日付のフォルダを作る・備忘録

[Delphi]System.PWideCharの記述例・備忘録