LoginSignup
4
3

WSLの環境からWindowsにclip.exeするときの文字化け対処

Posted at

結論

Shift JISもしくはUTF-16に変換する。以下のいずれか。

$ cat memo.txt | iconv -t cp932 | clip.exe
$ cat memo.txt | iconv -t sjis | clip.exe
$ cat memo.txt | iconv -t utf16 | clip.exe
$ cat memo.txt | nkf -Ws | clip.exe
$ cat memo.txt | nkf -Ww16L | clip.exe

cp932やsjisの範囲外の文字の場合は UTF-16 にする必要がある。

ちょっと説明

clip.exe というコマンドがWSLのUbuntuの環境で使えます。テキストをWindowsのクリップボードにコピーするコマンドです。WSLの環境からこのexeファイルを実行できます。

例えばこんな感じです。

$ clip.exe < memo.txt

コマンドの出力をパイプでつないでコピーすることもできます。

$ grep hogehoge < foo.log | clip.exe

WSL環境の中でこんな感じで実行すると、Windowsのクリップボードにコピーされますので、そのあとWindows側で任意のアプリケーションにテキストをペーストできます。

ただし、日本語を含むテキストをUTF-8で扱っている場合、Windowsに貼り付けた際に文字化けしてしまうようです。最近この事象に気が付きました。ダサいけど、Shift JISまたはUTF-16(リトルエンディアン)に変換してからclip.exeに渡す必要があるようです。

$ cat memo.txt | iconv -t cp932 | clip.exe
$ cat memo.txt | iconv -t sjis | clip.exe
$ cat memo.txt | iconv -t utf16 | clip.exe
$ cat memo.txt | nkf -Ws | clip.exe
$ cat memo.txt | nkf -Ww16L | clip.exe

iconv -t utf16nkf -Ww16L は、BOM付きリトルエンディアンのUTF-16に変換します。

私はタイプする文字数が少ないnkfを使っています。

nkfは以下のコマンドでインストールできます。

$ sudo apt-get install nkf

以上。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3