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

解決


ヤマダ  2009-02-17 15:18:54  No: 33399  IP: 192.*.*.*

ヤマダです。
いつもお世話になっております。
すみません。またお力を貸していただけないでしょうか。

D7 + XP

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

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

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

編集 削除
monaa  2009-02-17 18:33:51  No: 33400  IP: 192.*.*.*

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

編集 削除
UUU  2009-02-17 19:50:45  No: 33401  IP: 192.*.*.*

DEKOさんのMECSUtlsのAnsiToUTF8は利用できないかなあ・・・
http://homepage1.nifty.com/ht_deko/tech021.html

編集 削除
ヤマダ  2009-02-18 00:48:32  No: 33402  IP: 192.*.*.*

ヤマダです。

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

要件としては

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

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

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

有難うございました。

編集 削除
ヤマダ  2009-02-19 11:58:55  No: 33403  IP: 192.*.*.*

ヤマダです。
今解決しました。

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

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

とすればOKです。

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

編集 削除