« 2012年11月 | トップページ | 2013年3月 »

2013年1月

2013年1月28日 (月)

WindowsコマンドプロンプトにUnicode表示

久々にC++でWindowsのプログラムを書いた。指定したフォルダーに含まれる画像ファイルを、サブフォルダーも含め再帰的に探索して片っ端から表示するGUIアプリケーションである。Visual C++ 2008 Express(以下VCPと略)で「Unicode文字セットを使用する」にしていたが、利用したライブラリーの都合でファイル名をマルチバイト文字、すなわちShift JISに変換して渡すようにしているところで見事に躓いた。

Logo_de_la_République_française.svg[1].png

フランス共和国政府の公式ロゴ画像である。Shift JISは日本語と英語の他、ギリシャ文字とキリル文字をサポートしているが「é」と「ç」は無い。この件は、予めファイルをメモリーに読み込んだバッファーを渡すように変更して落着した。

GUIアプリケーションだったからこれで済んだが、もしコンソールアプリケーションで、コマンドプロンプトに英語、日本語、そしてフランス語のファイル名を正しく表示する仕様だったら、それは可能なのだろうか。

今回はCプログラミング入門の定番である「Hello world」を多言語に拡張したバージョンを使って、コマンドプロンプトとコンソールアプリケーションの文字エンコーディングについて調べてみた。なお記事の内容は調査で判明した事実関係を述べているものであって、取り上げている各ソフトウエア製品の仕様と異なる場合があるかもしれない。また調査に使った環境はWindows Vistaである。試していないがWindows 7および8では同じ結果になると予想している。Windows XPおよびそれ以前のNT系Windowsでも概ね同じになると思うが、3.1~95/98~Me系はWindows自体が一部を除きUnicode対応していないので、全く事情が異なるはずだ。

なお今回の記事の画像は、クリックすれば拡大表示されるようになっている。

2013/01/28追記: 現在設定されているコードページの取得方法が判明した。それに合わせて本文に追記・編集している。

続きを読む "WindowsコマンドプロンプトにUnicode表示"

| | コメント (2) | トラックバック (0)

2013年1月 8日 (火)

「100円均一商品の実力(1)電球型蛍光灯」の続き

以前の記事で取り上げた\105の電球型蛍光灯が、昨年の暮れ、2012年12月30日に壊れた。その状況を報告しよう。

続きを読む "「100円均一商品の実力(1)電球型蛍光灯」の続き"

| | コメント (0) | トラックバック (0)

« 2012年11月 | トップページ | 2013年3月 »