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

投稿ツリー


このトピックの投稿一覧へ

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

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.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箇所の部分です。

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

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

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



投票数:4 平均点:5.00

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

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

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

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


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