■ unicodeの文字コードからUTF8に変換するには

[Delphi Q & A 掲示板] [過去ログの一覧]


ヤマダ 2009/02/17(火) 15:18:54
ヤマダです。
いつもお世話になっております。
すみません。またお力を貸していただけないでしょうか。

D7 + XP

あるファイルにユニコードの文字コードがANSIで入っています。
このファイルを取得してUTF8で出力したいです。

この場合は、一文字一文字、ユニコード表とUTF8の表を参照して
出力するしかないでしょうか?

もしもっとスマートな解決方法がありましたらすみませんが教えてください。甘ったれてすみません。

monaa 2009/02/17(火) 18:33:51
UNICODEはWideChar(char二個分)
D7のAnsiStringはCharです
AnsiにUnicodeを入れれば桁があふれます。
つまりその仕様は間違えています。
あとUTF8というのはUNICODEの一つなので変換するもなにもその必要はありません。
文字コードの変更というのは文字コードには規則性が数多く存在するのでコード上は確かに一文字づつの変更になりますが、必ずしも1対1対応とは限りません。
文字コードについてもう少し勉強したほうがいいかもしれません。

UUU 2009/02/17(火) 19:50:45
DEKOさんのMECSUtlsのAnsiToUTF8は利用できないかなあ・・・
http://homepage1.nifty.com/ht_deko/tech021.html

ヤマダ 2009/02/18(水) 00:48:32
[[解決]]

ヤマダです。

monnaさん,UUUさん,ご返信ありがとうございます。
私の説明がまずかったみたいです。(+ 私の無知)

要件としては

Unicodeのコードポイント(\uXXXX)というのがansi(s-jis)
で記述されているファイルがあります。
その\uXXXXをUTF8に変換したものをファイルに出力したいです。

UUUさんが教えてくださった
function CodePointToUTF8(const UCS4: UCS4Char): UTF8String;
がイメージと近いです。

これが使えないか調べてみます。

有難うございました。

ヤマダ 2009/02/19(木) 11:58:55
ヤマダです。
今解決しました。

例. \u7528という文字列をwidecharに変換

ShowMessage(widechar(strtoint('$7528')));

とすればOKです。

ありがとうございました。

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library