ページ 11

「新●」が表示できない※土ヘンに川

Posted: 2010年10月19日(火) 22:11
by N
Visual C++でコンソールゲームを作成しております。
いつも参考にさせていただいています。
さて、タイトルの「新●」※土ヘンに川
のような一般的でない漢字をprintf等で
実行ファイルに表示させたいのですが、たとえば上記「●」だと
「warning C4566: ユニバーサル文字名 '\u5733' によって表示されている文字は、
現在のコード ページ (932) で表示できません」
などと警告が出て、結果正しく表示できません。
なにか方策はあるのでしょうか。

Re:「新●」が表示できない※土ヘンに川

Posted: 2010年10月19日(火) 22:30
by シエル
似たスレが前にありました。
参考になれば。
http://www.play21.jp/board/formz.cgi?ac ... &rln=63742

Re:「新●」が表示できない※土ヘンに川

Posted: 2010年10月19日(火) 23:11
by N
さっそく返信いただいておいてすみません。
初心者ですぐに理解できそうにありません。
ソースを単純化すると以下のとおりで、
結果として、「新●」※土ヘンに川
と表示したいのです。
(現状、前出警告出て、結果:「新?」と表示)

#include <stdio.h>

int main(void){
printf("深&#22323;");
return 0;
}

Re:「新●」が表示できない※土ヘンに川

Posted: 2010年10月20日(水) 06:38
by ISLe
例えワイド文字を使うコードを書いてもVisualC++のCランタイムは標準入出力に対してコードページ932で表現できない文字を扱えません。
#include <windows.h>
int main(void) {
    const wchar_t *wcs = L"深&#22323;";
    HANDLE hStdOut;
    DWORD dwNumberOfCharsWritten;
    hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    WriteConsoleW(hStdOut, wcs, wcslen(wcs), &dwNumberOfCharsWritten, NULL);
    return 0;
}
Win32のコンソールAPIを直接呼び出すことで表示できます。
コマンドプロンプトのコードページやフォントの設定に影響されません。
リダイレクトには対応しません。

Re:「新●」が表示できない※土ヘンに川

Posted: 2010年10月20日(水) 22:30
by N
じぶんのプログラムにとりこんでみたら、うまくいきました!
ありがとうございます。質問してよかったです!
きほん標準Cのライブラリをとこだわって(それしかしらない)
つくっていましたが、これからもっと勉強していきたいです。
たいへん助かりました。