リソーススクリプトの utf-8 指定とか

gccUnicode で書かれたソースコードをコンパイルするとか、Unicode 対応の Windows API を使うアプリケーションを生成するとか、そんな場合、ソースコードのはじめのほうに #define UNICODE を書くか、コンパイラオプションで -DUNICODE を書くかすればよい。と。そういったな。あれは本当だ。

一方で、リソーススクリプトにも、Unicode にまつわる問題がある。デフォルトでは、Shift_JIS で記述しなければ文字化けしてしまうのだが、ある方法を使えば、utf-8 で記述できるようになる。

詳細は、以下のサイトに書いてある。

リソーススクリプトで Unicode

リソーススクリプトのコンパイラである windres.exe に -c 65001 オプションをつける。65001 とは、utf-8 のコードページである。

さらに、ソースコード中で指定する方法もある。すなわち #pragma code_page(65001) である。簡単。

以上、C のソースコードと、リソーススクリプトという、2 種類の Unicode 系問題の解決方法をまとめたものが、以下の表だ。

はやみひょう

ソースでコマンドラインで
コード.c#define UNICODE-DUNICODE
リソース.rc#pragma code_page(65001)-c 65001

尺あまり

C ソースファイルには、先頭に以下のコードを記述するのが、自分にとって定番となっている。

#define UNICODE
#include <windows.h>

リソーススクリプトの場合は、以下だ。

#pragma code_page(65001)
#include <windows.h>

最近は、リソーススクリプトを全く書いてない。モニタの電源を切るとか、サスペンドするとか、UI をつくるまでもないアプリケーションをつくってばかりだからだ。