dullhikoのだるいブログ

殆ど日記のだるいブログ

そうそう、山から帰ってきてたわけで

2005年07月04日 | Weblog


たまに晴れた山はこんな感じですっきり爽やかであった。
一年で一番いい景色かもしれん。晴れれば。
だが滅多にすっきり晴れることはない…薄曇りだったりすることのほうがおおいね。
あと、毛虫が大量発生していた。今年は蛾が多いかもしれない。もしかすると梅雨も長引きそう。

続・MinGWなどいじって文字コードについて考える

2005年07月04日 | プログラミング
おかしい。FireFoxではエディットボックスに対して過去の入力履歴が出るわけだが、この「MinGWなどいじって(ry)」は過去に書いたことがあるらしく履歴が出たが、ブログにはその形跡がない。
折角、滅多にやらない「自分の記事に自分でトラックバック」をやろうと思ったのに…
まあいいや。とにかく、前の情報は間違っていたと言う話。

MinGWが4.1.0になっていたので、入れてみた。
すると、GCCは3.4.2になった。
まあ、これ自体は、どうでもいい。
以前使っていたバージョンでは、これがUTF-8においてLリテラル指定を使っても正しいUnicode(つか、UTF-16)として展開されず、上位バイトが0x00でぶち消されて文字化けしてしまうという悲しい現象が発生していた。
というか、N県の方のPCに入れた古いMinGWではそうなっていた。
そこで、下に帰ってくると同時にその4.1.0を入れて、以下のようなコードを試してみた。
ソースファイルの文字エンコーディングはUTF-8で。
#include <windows.h>
#include <stdio.h>

int main()
{
HANDLE t_hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    

    if(t_hConsole != INVALID_HANDLE_VALUE)
    {
    DWORD t_written=0;
    
        WriteConsoleW(  t_hConsole,
                L"表示のテストだが",
                8,
                &t_written,
                NULL);
    
    }
    else
    printf("failed to get stdout handle");
    
    MessageBoxW(NULL,
                    L"こうやってメッセージボックスでも表示可能",
                    L"タイトルもこんな感じ",
                    MB_OK);


return 0;
}

お、コンソールもメッセージボックスもバッチリ表示できた。というわけで。
もはやMinGWは日本語対応と言ってもいいのではないか、と。今更気づいてみたわけだったりして。

ただし、UTF-8はともかく相変わらずSJISなソースファイルでの問題点(0x955c「表」などの文字末尾が\\と誤認される)は解消されていないので、その辺は注意しておこう。