アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語で、外部ファイルからバイナリ形式でUTF-8の文字コード、
たとえば「E38182」だと「あ」になりますけど、「E38182」を読み込んで画面では「あ」と表示したいのですが、これはどのようにすれば一番カンタンに出来るのでしょうか?

最終的に第一水準文字はすべて置き換える予定なので、なるべく手間のかからない方法をとりたいと考えています。

ちなみに、ソースにはそのまま「あ」と入力すれば「あ」と表示される環境にあります。

よろしくお願いします。

A 回答 (4件)

> >計算で簡単に変換することができます。


> 最初からそれをきいていました。分かりにくくてすみません。

UTF-8のエンコーディングのルールはわかりますか?(わからない場合は参考URLを見てください)
これが分かれば、UTF-8からUCS-2への変換は簡単に計算できるはずです。
libiconvやICUなどを使っても変換できますが、かえって面倒な気がします。

AMD1以降の規格に対応した処理系であれば、wctombを使わなくてもfputwcなどで直接出力するのもありです。
あるいは、処理系によってはUTF-8のためのロケールを設定できることもあるでしょう。

参考URL:http://ja.wikipedia.org/wiki/UTF-8
    • good
    • 0

#2です。



> UTF-8からワイド文字への変換は自分で「E38182」は「あ」、「E38184」は「い」、と全部定義しなければならないのですね。

そんなことをしなくても、計算で簡単に変換することができます。
全部定義するのであれば、ワイド文字を介さずに、直接最終的な文字コードへの変換表を作った方が手っ取り早いと思います。
    • good
    • 0
この回答へのお礼

>計算で簡単に変換することができます。
最初からそれをきいていました。分かりにくくてすみません。

もしかしてそれがiconvを使うものですか?

お礼日時:2007/04/03 23:52

環境が書かれていませんが、最も多くの環境で通用する方法としては...



読み込んだUTF-8をいったんワイド文字に変換してから、wctomb関数などで多バイト文字に変換する方法です。wctomb関数を使う前にsetlocale関数で適切なロケールにすることを忘れないでください。
この方法は、ワイド文字の内部表現がUCS-2または4の場合なら簡単に実装できるはずです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ということは、UTF-8からワイド文字への変換は自分で「E38182」は「あ」、「E38184」は「い」、と全部定義しなければならないのですね。

お礼日時:2007/04/03 23:04
    • good
    • 0
この回答へのお礼

ありがとうございます。
しかし、iconvは文字列を変換するのであって、E38182のようなコードは変換できないと思うのですが。

iconvのインストールを行ったところ、make出来なくなったので消しました。

お礼日時:2007/04/03 22:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!