kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

クリップボードでもエンコードを気にする時代?

MSDNフォーラムのクリップボードの文字化けという投稿を最初に見たとき、「CF_TEXTだけど、エンコード違うんじゃないかな」と何となく思いました。
クリップボードデータ形式はいろいろ*1送りつけられるけど、テキストのエンコード情報まではないんですよねぇ…と思ったら、Windows NT以降、CF_LOCALEやCF_UNICODEDATAってのがあるのか(今調べて知った)。CF_UNICODEDATAでも符号化はUTF-8じゃないと思うけど。だから、たぶんUTF-8で送るVS2005のバグ…といってもいいような気がしないでもない。
クリップボードといえば、バッファ無制限(ただしテキストだけでいい)のクリップボード2がほしい今日この頃。「あ、2つ前のスタック使いたい」ってことよくあるんで…その手の支援ソフトありますけどね。
(追記)
MSDNフォーラムでさらにとっちゃんが追記されていますが、UTF-8のテキスト(XMLのファイルとか)をクリップボードに送るとVS2005はそのままUTF-8のままCF_TEXTとして送ってしまうんだそうだ。これは確かにまずいんじゃないかなぁ。
CF_UNICODETEXTで送ったとしても、符号化の問題があるから、受け手で判定しないといけないってのはあまりおもしろくないと思いますけどね。それはそうと、この話を調べようとMSDN2006/01を見ると、英語版のSetClipboardData()にある、Standard Clipboard Formatsに飛べなかったorz。

*1:それこそアプリケーション間の合意があればなんでも