• ベストアンサー

C言語でUTF-8コードで読み込んで表示は日本語にしたい

C言語で、外部ファイルからバイナリ形式でUTF-8の文字コード、 たとえば「E38182」だと「あ」になりますけど、「E38182」を読み込んで画面では「あ」と表示したいのですが、これはどのようにすれば一番カンタンに出来るのでしょうか? 最終的に第一水準文字はすべて置き換える予定なので、なるべく手間のかからない方法をとりたいと考えています。 ちなみに、ソースにはそのまま「あ」と入力すれば「あ」と表示される環境にあります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> >計算で簡単に変換することができます。 > 最初からそれをきいていました。分かりにくくてすみません。 UTF-8のエンコーディングのルールはわかりますか?(わからない場合は参考URLを見てください) これが分かれば、UTF-8からUCS-2への変換は簡単に計算できるはずです。 libiconvやICUなどを使っても変換できますが、かえって面倒な気がします。 AMD1以降の規格に対応した処理系であれば、wctombを使わなくてもfputwcなどで直接出力するのもありです。 あるいは、処理系によってはUTF-8のためのロケールを設定できることもあるでしょう。

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

その他の回答 (3)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

#2です。 > UTF-8からワイド文字への変換は自分で「E38182」は「あ」、「E38184」は「い」、と全部定義しなければならないのですね。 そんなことをしなくても、計算で簡単に変換することができます。 全部定義するのであれば、ワイド文字を介さずに、直接最終的な文字コードへの変換表を作った方が手っ取り早いと思います。

superjbs
質問者

お礼

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

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

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

superjbs
質問者

お礼

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

noname#39970
noname#39970
回答No.1
superjbs
質問者

お礼

ありがとうございます。 しかし、iconvは文字列を変換するのであって、E38182のようなコードは変換できないと思うのですが。 iconvのインストールを行ったところ、make出来なくなったので消しました。

関連するQ&A

  • バイナリ表記を表示するコードが分かりません(C言語)

    下記のプログラムはビットごとのANDを使って、 キーボードから入力された文字のASCIIコードをバイナリ表記で表示します。 #include <stdio.h> #include <conio.h> int main(void) { char ch; int i; printf("文字を入力してください: "); ch = getche(); printf("\n"); /* バイナリ表記を表示する */ for(i=128; i>0; i=i/2) if(i & ch) printf("1 "); else printf("0 "); return 0; } 【質問】 「バイナリ表記を表示する」部分のコードで、 1バイト(8bit)の最上位ビットは128(2の7乗)の重みがあり、それを初期値に与えて、 「i=i/2」で64,32,16,8,4,2,1と重みが下がっていくというのは分かりますが、 if(i & ch) で、どうして「i & ch」とすることで、バイナリ表記が表示できるのでしょうか? どなたか教えて頂けないでしょうか?お願いします。

  • 文字コード【utf-8】のHTMLを

    charset=utf-8で作成されているHTMLをDreamweaverで開くと テキストが文字化けしてしまいます。 他のテキストエディタで文字コードをUnicodeに設定して開いた場合も Web上で「ソースコードの表示」でソース表示してもやはり同じく文字化けしてしまいます。 この場合、どうしたら文字化けせずにソースを表示することができますか? できればDreamweaverで開けるとありがたいのですが・・・ アドバイスいただけると助かります。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • HTML
  • IE4/5、NN4/6で、UTF-8多言語ページの作成・文字入力方法

    当方、Windows95です。 IE4.0と5.0、ネスケ4.xと6.2を使っています。 UTF-8の文字コードセットにて、中文やハングルなども交えたHTMLページを作りたいのですが、どうやってもうまいこといきません。 ネスケに付属のComporserでは、新規、または既存のHTML(Shift-JIS)を開いて、文字コードをUTF-8にして、中文やハングルなどを入力して保存しています。 入力は、ATOK8の文字コードパレットで文字一覧を見ながらクリックして入力しています。 しかし、それをブラウザプレビューしたら、半角カタカナのような文字化けをしていて、正しく表示されていません。表示モードはUTF-8にしています。 外国語フォントはインストール済みです。ネスケ4以外からは、すべて見ることができます。 もう1つ、秀丸エディタでもUTF-8モードで編集、保存、しているのですが、編集画面の半角カタカナのような文字のままブラウザに表示されてしまいます。 http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 このようなページのソースを拾っての、コピーペーストでは、正しく表示されます。 MS-OfficeやMGIによる解決方法は無しでお願いしたいと思います。<(_ _)>

    • ベストアンサー
    • HTML
  • C言語のプログラミングで文字コードを表示する方法を教えてください。

    ファイル名<sample-utf8.txt> 32 30 30 38 e5 b9 b4 35 e6 9c 88 32 37 e6 97 a5 0d 0a ef bc 92 ef bc 90 ef bc 90 ef bc 98 e5 b9 b4 ef bc 95 e6 9c 88 ef bc 92 ef bc 97 e6 97 a5 0d 0a e8 a8 88 e7 ae 97 e6 a9 9f e3 82 b7 e3 82 b9 e3 83 86 e3 83 a0 ef bc 91 テキストメモの文字を表示するプログラムをC言語で作りたいのですがわかりません。どなたかソースコードを教えていただけると助かります。よろしくお願いします。

  • MFCのコントロールにUTF-8の文字を表示したい

    MFCのコントロールにUTF-8の文字を表示したい 表題の件ですが、VisualStudio2008において、UTF-8+BOMフォーマットで保存したソースコードにBOMつきUTF-8を入力する方法と、UTF-8文字列をMFCのコントロール(リストコントロールなど)に表示する方法がわかりません。 どなたかご教授いただける方が居られましたら幸いです。

  • UTF-8のコード表について

    UTF-8のコード表の中に「Ͱ」、「ͱ」、「Ͳ」、「ͳ」といったように行列式のような文字がたくさんあるのですが、これらの用途は何でしょうか? どうやら文字コードの16進数を示している所まではわかるのですが・・・ わざわざ入れなくとも不使用、未使用にしてしまえばいいのにと感じます。 現在、 http://ja.wikipedia.org/wiki/UTF-8%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7_0000-0FFF を参照しています。 回答よろしくお願いします。

  • 文字コードがUTF8のため、トップページが表示されない。

    昨年10月にMovable Typeを用いて、ブログを作成しているのですが、文字コードがUTF-8のためトップページを表示する際に、エンコードで文字コードの設定を自動選択にするか、UTF-8に設定しなおさないと、表示されません。多くの方がIEの標準の設定でShift-Jisで設定されているので、設定をしなおさないと表示することができません。 ソース上で、自動的に表示させるようにすることはできるのでしょうか? music-addict.net/world/

  • UTF-8の文字コードをIE5で表示するには

    UTF-8の文字コードをMACのIE5で表示するにはどのようにすればいいのでしょうか?

    • ベストアンサー
    • Mac
  • c言語の再帰について教えてください。

    c言語を勉強してるんですが、再帰のイメージがなかなかつかめません。 例えば、入力した文字列を逆から一文字ずつ表示させるのには どうしたらいいのか教えてください! 入力:ABCDE E D C B A ソースで処理される順序など説明等していただけたらうれしいです。

  • JSPでUTF-8の文字列表示

    JSPでUTF-8の文字列を表示することができず困っています。 HTMLの<form>でPOSTした任意の文字列をjspでUTF-8の文字列に変えたいのですが、 いろいろ試したのですがどうもうまくできません。 jspは全然くわしくないので困ってます。 以下のようなHTMLで <body> <h1 style="background:#cccccc;width:60%">文字コード変換したい文字列を入力</h1> <br> *UTF-8に変換します。 <form method="POST" action="moji2.jsp"> <textarea name="enco" cols="60" rows="7"></textarea> <br /> <input type="submit" value="変換" /> </form> </body> 以下のようなJSPファイルで <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import="java.net.*" %> <% request.setCharacterEncoding("Windows-31J"); %> <% String en = request.getParameter("enco"); String ren = URLEncoder.encode(en); %> <%=ren %> となまぁただUTF-8の文字列を表示をする勉強をしていたのですがいろいろかえてもShift_JISでエンコードされた文字列が表示されます。 例)あいうえお で入力すると %82%A0%82%A2%82%A4%82%A6%82%A8 やりたいことはこのサイトと同じことなんです http://www.tagindex.com/tool/url.html 例)あいうえお %e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a 最終目標は任意の文字列をUTF-8に変換して、ヤフーの形態素解析をすることです。初心者ですがよろしくお願いします。。

    • ベストアンサー
    • Java

専門家に質問してみよう