ヤマダです。
いつもお世話になっております。
すみません。またお力を貸していただけないでしょうか。
D7 + XP
あるファイルにユニコードの文字コードがANSIで入っています。
このファイルを取得してUTF8で出力したいです。
この場合は、一文字一文字、ユニコード表とUTF8の表を参照して
出力するしかないでしょうか?
もしもっとスマートな解決方法がありましたらすみませんが教えてください。甘ったれてすみません。
UNICODEはWideChar(char二個分)
D7のAnsiStringはCharです
AnsiにUnicodeを入れれば桁があふれます。
つまりその仕様は間違えています。
あとUTF8というのはUNICODEの一つなので変換するもなにもその必要はありません。
文字コードの変更というのは文字コードには規則性が数多く存在するのでコード上は確かに一文字づつの変更になりますが、必ずしも1対1対応とは限りません。
文字コードについてもう少し勉強したほうがいいかもしれません。
DEKOさんのMECSUtlsのAnsiToUTF8は利用できないかなあ・・・
http://homepage1.nifty.com/ht_deko/tech021.html
ヤマダです。
monnaさん,UUUさん,ご返信ありがとうございます。
私の説明がまずかったみたいです。(+ 私の無知)
要件としては
Unicodeのコードポイント(\uXXXX)というのがansi(s-jis)
で記述されているファイルがあります。
その\uXXXXをUTF8に変換したものをファイルに出力したいです。
UUUさんが教えてくださった
function CodePointToUTF8(const UCS4: UCS4Char): UTF8String;
がイメージと近いです。
これが使えないか調べてみます。
有難うございました。
ヤマダです。
今解決しました。
例. \u7528という文字列をwidecharに変換
ShowMessage(widechar(strtoint('$7528')));
とすればOKです。
ありがとうございました。
ツイート | ![]() |