- ベストアンサー
unicodeの表示
C言語でプログラミングをしているのですが、unicodeの表示方法がよくわかりません。┌という文字(unicodeでU+250C)を表示したく、wchar_t型など調べたのですがプログラムの書き方がよくわかりませんでした。unicodeを直接指定する方法か'┌'のように直接指定する方法が知りたいです。アドバイスお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
cgwinを起動してみましたが、ちょっとややこしそうですね。 wchar_t unitext[100] = L"あ"; cout << hex << unitext[0] << endl; cout << hex << unitext[1] << endl; とすると、82とa0がはいっていました。(SJISです) printfやcoutを使ってコンソールで表示するには 一度sjisに変換しなければいけないかもしれません。 unicode→sjisは setlocaleや wcstombsを 調べてください。 こういうのもあります。 http://www.doumo.jp/modules/general/mojicode.html (jisですがjisからsjisへの変換は簡単です)
その他の回答 (3)
- ffffff_2004
- ベストアンサー率0% (0/4)
表示媒体は何ですか? sjisコンソールですか? UTF-8コンソールですか? qt(sjis)ですか? それにより表示方法は違います。 文字をunicodeで保持するのは勝手ですが、 表示する際には、表示媒体が表示できるコードに 変換する必要があります。 wchar_t a = L"┌"とやっても、ソースコードがeuc(sjis)なら、中身は、euc(sjis)ですよ。 やるなら、 表示媒体が、UTF-8なら、 wchar_t a = toUtf8(0x250C) wprintf("%lc", a); です。
- nitscape
- ベストアンサー率30% (275/909)
cygwin+gccではやったことはありませんが。。。 VC++のように「Unicodeビルド」があるならばそれを使って、VCで言うところのTCHARもしくはwchar関係の関数のみを使う必要があります。 Unicodeビルドのような関数がない場合に、Unicodeを表示するにはprintfのような関数は使わずに、WindowsでしたらIMultiLanguageを使って文字を出力する必要があります。
- kmb01
- ベストアンサー率45% (63/138)
BCBですがこんな感じでいけます。 wchar_t wc[100] = L"ABC"; char c[100]; sprintf(c, "%S", wc);
補足
アドバイス頂いたとおりにやってみたのですが、うまくいきません。何も表示がされない状態です。 cgwinを使っています。