clip.exeたまに便利
WindowsのCLI(主にWindowsターミナル上でPowerShellやWSL2を使う時)に置いて、出力を簡単にコピペしたい時がある。
そういう時に便利なのがclip.exeで、WSL2でもWindows側のパスとかexeも使えるというのもあってちょいちょい便利に使っている。
echo "Yes, I'm on fire!" | clip.exe
こんな風に使うとクリップボードに文字列が保存される。
ちなみにWindows組み込みのPowerShell5.1で上みたいにclip.exeを呼び出すと文字化けしがちで、WSL2と違ってiconv的な事をしようとすると.NETのクラスを直接呼び出す必要があって面倒。
winget install Microsoft.PowerShell
で適当に新しいPowerShellをインストールして使いましょう。
WSL2でclip.exe使ったときの文字化け
WSL2で
echo "🐰ドクター?" | clip.exe
とかやってペーストすると 晴繝峨け繧ソ繝シ・・ なんて感じに文字化けしてしまう。
どうせ変換噛ませばまぁ動くんだろうなと思いつつ都度マウスでコピってたけどなんとなく思い立って調べてみた。
軽く検索すると、iconvを挟んでcp932にする例がそこそこの頻度で見つかる。 ただ特別な理由がない限りはutf16を指定するのが良いだろう。
echo "🐰ドクター?" | iconv -t utf16 | clip.exe
補足
ちなみにutf8に変換しても文字化けする。 なぜかと思って少し調べたがどうやらWindowsは内部的にutf16ネイティブらしい。 だからclip.exeはutf16じゃないとキレイに受け付けてくれないみたい?なるほどねぇ。

そういえば昔メモ帳で保存するときのエンコード指定メニューが「文字コード」って表記なのに選択肢に「Unicode」と「UTF-8」が両方あって???みたいになったのを覚えている。 (遭遇したのはWin7だったけど、Win10出てから数年経つまで修正されてなかったと思う)
今Windows11 25H2でふと見てみたらこんなメニューになっていた。sjisどっか行った?

