2009年11月13日

MSDNの誤謬に思いっきりだまされた件

ポインタとハンドルの取得には、この関数に代わる関数として GetClassLongPtr 関数があります(ポインタとハンドルは、32 ビット Windows では 32 ビット、64 ビット Windows では 64 ビットです)。32 ビット Windows と 64 ビット Windows の両方と互換性のあるコードを記述するには、GetClassLongPtr 関数を使ってください。

以上、GetWindowLong 関数より。

Windows APIに明るい人は気付いているかもしれないが、この文章内のGetClassLongPtr、正しくはGetWindowLongPtrである。ご丁寧にリンク先もGetClassLongPtrなお陰で、ものの見事に引っかかって長い事悩んでしまった。Microsoftめ……時間返せ……

そもそも、MSDN ライブラリの文章、誤謬や脱字の類が多すぎないか?

ラベル:MSDN Windows API
posted by 天井冴太 at 02:45| Comment(0) | TrackBack(0) | Other | 更新情報をチェックする

2009年11月07日

UTF-8な文字列出力をWindowsのコマンドプロンプトで確認する『恐らく一番現実的な』方法

TwitterAPIを叩いて遊んでみた。Twitter APIの返す文字列はUTF-8なので、そのまま標準出力に吐いても、デフォルトの文字コードがcp932(Shift JIS)なWindowsのコマンドプロンプトでは、ものの見事に化けてしまう。一度ファイルにリダイレクトして、それを適当なテキストエディタで開けば読む事は出来るが、少々手間だ。めんどくさい。

じゃあコマンドプロンプトでUTF-8を表示する事は出来ないのかと探してみたら、CHCPコマンドを使えばいいと言う情報が出て来た。例えば、コマンドプロンプトで文字コードがUTF-8のテキストを表示する - KUMA TYPE。ただしこの方法だと、(リンク先の記事でも書かれているが)表示が崩れてしまう。これはよろしくない。

Cygwinの次期バージョンである1.7はUTF-8に対応する予定らしいが、公式ページにThe official 1.7.1 release should go public in late October or early November 2009.なんて書かれてあったら、今更βを導入しようなんて気も消え失せようというものだ。

では他に方法はないのか。やはりリダイレクトとエディタかめんどくさいコマンドプロンプトなんて死んじゃえばいいのに、と悶々としていたら、ふとひらめいた。

nkf使えばいいんじゃないか。

コマンドプロンプトでのUTF-8文字列の表示例(通常に出力した場合)試してみると、この様に化け化けだったのが……

コマンドプロンプトでのUTF-8文字列の表示例(nkfにパイプした場合)化けずに表示された。素晴らしい!

つまり、UTF-8な文字列を返すプログラムSOME_UTF8_OUTPUTが在るとすると……

SOME_UTF8_OUTPUT | nkf -s

……とすればいいことになる。

まぁいちいちパイプ処理書くのは面倒だけど、リダイレクトしてエディタで確認するのに比べたら万倍ぐらいマシだろう。なんなら確認用バッチファイルを用意するなり、DOSKEYでエイリアスを設定するなりすれば良いだろうし。

ラベル:nkf utf-8 Windows CUI CMD
posted by 天井冴太 at 03:24| Comment(0) | TrackBack(0) | Tool | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。