リソースでUTF8のテキストを扱うにはどうすればよいですか?

解決


IMA  2014-04-21 03:17:45  No: 46262

UTF8(BOMなし)のテキストファイル「test.text」を下記のように用意します
--
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン
アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワオン
----

リソースファイルを以下のように作りプロジェクトに追加します。
test.rc
--
TEST TEXT "test.text"
----

FormにTButtonとTMemoを追加しボタンを押すとリソースからテキストを読み込むようにすると文字化けします。
ただしく表示するにはどうすればよいでしょうか?

procedure TExampleForm.Button1Click(Sender: TObject);
var
  RS: TResourceStream;
begin
  RS := TResourceStream.Create(hInstance, 'TEST', 'TEXT');
  Memo1.Lines.LoadFromStream(RS);
end;


IMA  2014-04-21 03:19:04  No: 46263

あ、環境はWindows7 Pro + Delphi XE5 です。


Mr.XRAY  2014-04-21 05:44:34  No: 46264

>テキストを読み込むようにすると文字化けします。

この文字化けの問題は,結構いっぱいあります.
ここで直接コードを提示してもいいのですが,是非,自分で調べることをお勧めします.
調べた結果,不明なことがあれば,また訊いてみてはいかがでしょうか.
その方が,自分の身になると思います.

「Delphi UTF-8 文字化け」
等で,Google で検索してみてください.


IMA  2014-04-21 06:27:55  No: 46265

すでにあれこれ検索してたのとTStringListでは問題なく出来ていたるので、このサンプルで単純なミスを犯してたのだと思い、だめもとで第2引数にEncodingを指定したらできました。
LoadFormStreamでEncoding指定できるのを知りませんでした。

おかげさまで解決いたしました。
ありがとうございました。

procedure TExampleForm.Button1Click(Sender: TObject);
var
  RS: TResourceStream;
begin
  RS := TResourceStream.Create(hInstance, 'TEST', 'TEXT');
  Memo1.Lines.LoadFromStream(RS, TEncoding.UTF8);
end;


IMA  2014-04-21 06:47:41  No: 46266

解決済みチェックを忘れておりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加