Qt とソースファイルの文字コード

先日いただいたコメントをきっかけに Windows における Qt とソースコードの文字コードについてまとめてみました。不足している内容もあるかと思いますので、コメント等で指摘いただければ追記していきます。

Qt の推奨

Qt では Qt4 の時からソースファイルの文字コードは UTF-8 で書くことを前提としています。メッセージは英語(もしくは ID)で埋め込み、日本語などを表示する場合は基本的には tr() でローカライゼーションの仕組みを使って変換させることを想定しています。

以前は Latin1 を推奨していて、UTF-8 文字列を埋め込む場合には \x でエンコードすることを推奨していました。しかし、Unicode / UTF-8 が一般的となってきたので緩和された形でしょうか。とはいえ、余裕があればエンコードした形式の方がトラブルは起こりにくいです。メッセージをソースから把握するのは難しくなりますが。

ユーザーの要望

しかし、ちょっとしたアプリの作成する際に翻訳を用意したり、エンコードするのは面倒なので、日本語文字列をそのまま埋め込みたいという状況があります。

Linux や Mac などでは UTF-8 なロケールの利用が一般的となったため、UTF-8 でソースを記述しておけば困ることはほとんど無くなりました。しかし、Windows では Shift JIS(CP932) が日本語のコーデックであること、Visual Studio が文字列リテラルの文字コードを変換してコンパイルすることから様々な工夫が必要です。

“Qt とソースファイルの文字コード” の続きを読む