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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
N

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

#1

投稿記事 by N » 9年前

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

シエル

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

#2

投稿記事 by シエル » 9年前

似たスレが前にありました。
参考になれば。
http://www.play21.jp/board/formz.cgi?ac ... &rln=63742

N

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

#3

投稿記事 by N » 9年前

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

#include <stdio.h>

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

ISLe

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

#4

投稿記事 by ISLe » 9年前

例えワイド文字を使うコードを書いても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を直接呼び出すことで表示できます。
コマンドプロンプトのコードページやフォントの設定に影響されません。
リダイレクトには対応しません。

N

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

#5

投稿記事 by N » 9年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る