コンソール画面で日本語が正常に表示されない

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/1/16 16:29
完全無欠猫  長老 居住地: 兵庫  投稿数: 750
管理人さんには少しメッセージで話をしたのですが、自分なりに調べてみてある程度の結論が出たので一応報告ということで書いておきます。
私の稼働環境は、次の通りです。

Windows XP SP3/32bits
msvc9+SCONS

現在のBlenderのメッセージは国際化の対応の為に各メッセージ毎に対応する言語に置き換えられたファイルとして供給されています。
このファイルがUTF-8で作成されています。
ところが、このUTF-8が曲者でコマンドプロンプトの設定のコードページでは設定できません。
また、通常プログラムでコードページを切替える場合はsetlocaleを使用すると思いますが、これもmsvc9ではエラーになり処理できません。
エディターでUTF-8のコードページで日本語の文章を作成して、コマンドプロンプト画面で表示してみて下さい。
見事に文字化けするはずです。
では、表示できないのかと言うとそうでもありません。
コマンドプロンプトでchcp 65001と入力して、同じファイルを表示すると正しく表示されます。
chcpはコードページを切替えるコマンドです。

現状のBlenderが日本語のメッセージを正常に表示できないのは、コマンドプロンプト画面と同じです。
表示する文字列がUTF-8だからです。
しかし、次のようにプログラムを修正すると、正常に日本語のメッセージを表示出来るようになります。

void WM_init(bContext *C, int argc, const char **argv)
{
	/* 2013.01.16 Modified Start */
	char SysDir[FILE_MAXDIR];
	char Cmd[MAX_PATH * 2];
	/* 2013.01.16 Modified End */

	
	if (!G.background) {
		wm_ghost_init(C);   /* note: it assigns C to ghost! */
		wm_init_cursor_data();
	}
	GHOST_CreateSystemPaths();

	BKE_addon_pref_type_init();

	wm_operatortype_init();
	WM_menutype_init();
	WM_uilisttype_init();

	set_free_windowmanager_cb(wm_close_and_free);   /* library.c */
	set_blender_test_break_cb(wm_window_testbreak); /* blender.c */
	DAG_editors_update_cb(ED_render_id_flush_update, ED_render_scene_update); /* depsgraph.c */
	
	ED_spacetypes_init();   /* editors/space_api/spacetype.c */
	
	ED_file_init();         /* for fsmenu */
	ED_node_init_butfuncs();
	
	BLF_init(11, U.dpi); /* Please update source/gamengine/GamePlayer/GPG_ghost.cpp if you change this */
	BLF_lang_init();

	/* get the default database, plus a wm */
	wm_homefile_read(C, NULL, G.factory_startup);
	
	BLF_lang_set(NULL);
	
	/* 2013.01.16 Modified Start */
	GetSystemDirectory(SysDir, FILE_MAXDIR);
	sprintf(Cmd, "%s\\chcp 65001", SysDir);

	system( Cmd );
	/* 2013.01.16 Modified End */

	/* note: there is a bug where python needs initializing before loading the
	 * startup.blend because it may contain PyDrivers. It also needs to be after
	 * initializing space types and other internal data.
	 *
	 * However cant redo this at the moment. Solution is to load python
	 * before wm_homefile_read() or make py-drivers check if python is running.
	 * Will try fix when the crash can be repeated. - campbell. */

/* 2013.01.16 Modified Start */
/* 2013.01.16 Modified End */
のブロックで囲まれた2箇所の部分です。

何をしているかというと、先程実験したことをしているだけです。
関数では出来ないので、システムの外部コマンドを呼び出しています。

これは私自身が自己責任においてやったことなので、同様の事を行って発生したいかなる問題にも責任は負えませんので、ご了解ください。

まあ、ここだけの話ということでお願いします。



投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/1/17 7:42
yamyam  管理人 居住地: そうや、うちはおおさかやー  投稿数: 4403
フォントはデフォルトでいけますか?
私が少し調べたところではデフォルトフォントでは文字セットが足りないらしく、レジストリをいじり、Blenderをコマンドプロンプトで立ち上げるとメッセージの文字化けがなくなったようですが、結局フォント変える必要があるのがネックだと思っています。

投票数:1 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013/1/17 8:34
完全無欠猫  長老 居住地: 兵庫  投稿数: 750
ショートカットの割付フォントがラスタのままだと文字化けします。
MSゴシックがデフォルトで選択てきると思いますが、それで一応表示は出来ると思います。
MSゴシックで普通表示できないのは特殊な範囲のものだと思いますしね。

念の為に確かめる方法としては次の方法が適当だと思います。
現状の翻訳文字列が全て表示できるかは、コマンドプロンプトでフォントをMSゴシックに設定して、
chcp 65001でコードページを設定した後に、翻訳原文をコマンドプロンプトでタイプしてみて文字化けがなければ大丈夫だと思います。

Blenderを稼動させた状態で実際に全ての翻訳文をコンソールに出すのは無理ですから、上記の方法で確認するしかないと思います。

この検証の前提として、次のことを確かめた方がいいと思います。
1.Blenderのショートカットで割り付けられているフォントがラスタフォントではなく、文字コードを網羅したMSゴシックなどに設定されている事。
2.地域と言語のオプションのコードページ変換テーブルに65001のUTF-8がインストールされている事。
投票数:3 平均点:3.33

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki