ページ 1 / 1
「新●」が表示できない※土ヘンに川
Posted: 2010年10月19日(火) 22:11
by N
Visual C++でコンソールゲームを作成しております。
いつも参考にさせていただいています。
さて、タイトルの「新●」※土ヘンに川
のような一般的でない漢字をprintf等で
実行ファイルに表示させたいのですが、たとえば上記「●」だと
「warning C4566: ユニバーサル文字名 '\u5733' によって表示されている文字は、
現在のコード ページ (932) で表示できません」
などと警告が出て、結果正しく表示できません。
なにか方策はあるのでしょうか。
Re:「新●」が表示できない※土ヘンに川
Posted: 2010年10月19日(火) 22:30
by シエル
Re:「新●」が表示できない※土ヘンに川
Posted: 2010年10月19日(火) 23:11
by N
さっそく返信いただいておいてすみません。
初心者ですぐに理解できそうにありません。
ソースを単純化すると以下のとおりで、
結果として、「新●」※土ヘンに川
と表示したいのです。
(現状、前出警告出て、結果:「新?」と表示)
#include <stdio.h>
int main(void){
printf("深圳");
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"深圳";
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のライブラリをとこだわって(それしかしらない)
つくっていましたが、これからもっと勉強していきたいです。
たいへん助かりました。