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;
あ、環境はWindows7 Pro + Delphi XE5 です。
>テキストを読み込むようにすると文字化けします。
この文字化けの問題は,結構いっぱいあります.
ここで直接コードを提示してもいいのですが,是非,自分で調べることをお勧めします.
調べた結果,不明なことがあれば,また訊いてみてはいかがでしょうか.
その方が,自分の身になると思います.
「Delphi UTF-8 文字化け」
等で,Google で検索してみてください.
すでにあれこれ検索してたのと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;
解決済みチェックを忘れておりました。
ツイート | ![]() |