コードページ
文字化け
日本語を表示させようとしなければ、英語のソフトを問題なく使えるかというと
そうでもないようだ。
変な文字が表示されてしまう。
どうやら普通の記号やアルファベット以外の文字も使われていて
日本語の文字コード程かは分からないが、文字コードもいくつかあるようだ。
roguelike game で出てくるのは多分 IBM PC のコードページ437 だろう。
規格はどうだか知らないが
#include <stdio.h>
#include <locale.h>
#include <ctype.h>
main() {
int l,h;
setlocale(LC_CTYPE, "us"); //USのとき
//setlocale(LC_CTYPE, "jpn"); //JPのとき
printf("locale:%s\n", setlocale(LC_CTYPE, NULL));
printf(" 0123456789abcdef");
for (h=0; h<16; h++) {
printf("\n0x%02x:",h*0x10);
for (l=0; l<16; l++) {
int c = h*16+l;
if ( isprint(c) ) putchar(c);
else putchar(0x20);
}
}
return 0;
}
で出力すると
コードページ437

Shift-JIS

となった。(Windows XP + Borland C++ Compiler)
とりあえず、英語のソフトをそのまま使うなら
プロンプトのコードページを437にすればちゃんと表示される。
日本語化
コードページ437のソフトを日本語のコードページ932で使えるように日本語化できるか?
Shift-JIS はコードページ437の文字を含んでいるか調べていないが
Unicode でコードページ437の文字を表示させてみたところ、
フォントの問題?か全角で表示されてしまった。
文字がそろわなくなってしまうのは roguelike game では致命的。
コードページ437のプロンプトで日本語を Unicode で表示するのが良さそう。
NT系のWindowsでないと動作しなくなってしまうが。
日本語環境で表示
コンソールアプリケーションはおいといて、Windowsアプリケーションで表示するにはどうしたものか。
フォントの設定をいじくって表示するプログラムを書いて、いろいろ試してみたところ、
Terminal フォントを選んで CHARSET に OEM_CHARSET を設定すると表示できた。
testfont.zip (250,358 バイト)

リンク