ucs2 → utf8への変換について(Delphi 2007)

解決


アーク  2011-10-12 20:18:57  No: 41008

標題のとおりです。
ucs2からutf8への変換するためには、どのようにしたらよいでしょうか?
宜しくお願いします。


DEKO  URL  2011-10-13 01:58:02  No: 41009

こんにちは。

procedure TForm1.Button1Click(Sender: TObject);
var
  W: WideString;
  U8: UTF8String;
begin
  W := 'こんにちは';   // UCS2 (UTF-16LE BMP)
  U8 := Utf8Encode(W); // UCS2 -> UTF-8
  ShowMessage(U8);     // UTF-8 なので化けて見えると思います
end;

# Delphi 2007 の UTF8String は D2009 以降で言う所の
# RawByteString や TBytes のような扱いになります。

ファイル出力でしたら、先頭に BOM (#$FE#$FF) を付けて書き出せば OK です。UCS2 のファイル入力は WideStrings.TWideStringList を使えば簡単に読み込めます。

WideStrings / WideStrUtils には、UCS2 (WideString) や UTF8 を扱う関数がイロイロあります。


アーク  2011-10-13 03:22:32  No: 41010

お返事ありがとうございます。
上記を試してみるかつ、関数等ももっと確認してみたいと思います。


DEKO  URL  2011-10-13 07:27:33  No: 41011

> 先頭に BOM (#$FE#$FF) を付けて
これは WideString の時に付けておきます。
UTF-8 変換後に BOM を付けるなら #$EF#$BB#$BF です。


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

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






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