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

解決


ヤマダ  2009-02-18 00:18:54  No: 33399

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

D7 + XP

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

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

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


monaa  2009-02-18 03:33:51  No: 33400

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


UUU  2009-02-18 04:50:45  No: 33401

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


ヤマダ  2009-02-18 09:48:32  No: 33402

ヤマダです。

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

要件としては

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

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

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

有難うございました。


ヤマダ  2009-02-19 20:58:55  No: 33403

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

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

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

とすればOKです。

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


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

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






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