🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

3回答

9658閲覧

teraterm で 日本語をコピペすると文字化けが起きます。

EzrealTrueshot

総合スコア389

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

2クリップ

投稿2021/02/04 13:17

編集2021/02/04 13:53

前提・実現したいこと

teraterm上からコピーした文字をメモ帳(あらゆるほかのテキストエディタ)に貼り付けると下記のように文字化けが起きます。

teraterm上 表示

# なんで日本語が文字化けするの? def main(): print("test") if __name__ == '__main__': main()

メモ帳(テキストエディタ)上 表示

# 縺ェ繧薙〒譌・譛ャ隱槭′譁・ュ怜喧縺代☆繧九・・・ def main(): print("test") if __name__ == '__main__': main()

こちらを文字化けさせない方法をご存知の方いらっしゃいましたら、ご教示いただけませんでしょうか?

試したこと

https://www.j-oosk.com/teraterm/mojibake/563/
こちらに記載されている手順を踏んだのですが、解決できませんでした。

補足情報(FW/ツールのバージョンなど)

Ubuntu18.04 and 20.04

root@TEST-PC:~/tera# locale LANG=C.UTF-8 LANGUAGE= LC_CTYPE="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_TIME="C.UTF-8" LC_COLLATE="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_PAPER="C.UTF-8" LC_NAME="C.UTF-8" LC_ADDRESS="C.UTF-8" LC_TELEPHONE="C.UTF-8" LC_MEASUREMENT="C.UTF-8" LC_IDENTIFICATION="C.UTF-8" LC_ALL=

teraterm Version 4.87

tmux 2.3 ~ 3.0(開発端末によってバージョンが異なります)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doda

2021/02/04 13:38

もしかしてUbuntu側でtmux(またはbyobu)を使っていますか?
EzrealTrueshot

2021/02/04 13:46

はい。tmuxを利用しています!
Daregada

2021/02/04 14:00 編集

「tmux クリップボード 日本語 文字化け」だったか。
EzrealTrueshot

2021/02/04 14:02

最新のバージョンでためしてみましたが、同じように文字化けしてしまいました。
Daregada

2021/02/04 14:05

すぐ上の書き込みが表示されていない状態でコメントしたので、「最新バージョン使えば」というアドバイスは忘れてください。原因はteraterm側ではないからです。
EzrealTrueshot

2021/02/04 14:06

tmux を利用すると文字化けが起きてしまうのでしょうか!?
doda

2021/02/04 14:28

Tera Termの「設定」-「その他の設定」-「制御シーケンス」にある「リモートからのクリップボードアクセス」の設定は何になっていますか?
EzrealTrueshot

2021/02/04 14:46

Clipboard access from remote [read/write] になっております!
Daregada

2021/02/04 15:25

「teraterm上からコピーした文字」のコピーって、具体的にはどのような操作で行なっていますか?
EzrealTrueshot

2021/02/04 16:22

bind Space copy-mode bind p paste-buffer bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "win32yank.exe -i" bind-key p run "win32yank.exe -o | tmux load-buffer - && tmux paste-buffer" このようなconfigにしております。 win32yankはwsl上のUbuntuとWindowsとでクリップボード共有するのに用いております。
Daregada

2021/02/05 01:02 編集

↑それはtmux 1.xのころの設定で、2.2で廃止されました。上記のリンクでもコメントになっているでしょう。
EzrealTrueshot

2021/02/05 01:20

ありがとうございます。 setw -g utf8 on set -g status-utf8 on こちらを設定してみましたが、文字化けしました;
EzrealTrueshot

2021/02/05 01:25

あと、1つ気づいたことがありました。 teraterm上にてコピーを行い、同じteraterm上にペーストしても、文字化けがおきました。
guest

回答3

0

ベストアンサー

前提: 質問者の言うところの「teraterm上からコピーした文字を」とは、リモート側(Ubuntu)で実行したtmux (ターミナルマルチプレクサー)のコピーモードでバッファにコピーした文字のことです。

起きている現象: コピーしたデータは、Tera Termの「その他の設定」の「制御シーケンス」タブにある「リモートからのクリップボードアクセス」を「書込」や「読込/書込」に設定しておくことで、(おそらくOSC 52という端末の制御シーケンスを利用して)ローカル側(Windows)のクリップボードにコピーされます。

このとき、リモート側のUTF-8でエンコードされたバイト列が、そのままローカル側のクリップボード(のCF_TEXTにマルチバイト文字(Shift_JISとか)として)にコピーされるため、リモート側でペーストすると文字化けを起こします。クリップボード側でそれをUTF-16LEに変換したデータも保持しますが、元のデータのエンコーディングが間違っているため、こちらも文字化けを起こします。

なお、Tera Termがリモート側にペーストするときには、ローカル側のクリップボードのデータ(文字化けした文字列)を、teratermの「端末」設定によりUTF-8にエンコーディングするので、リモート側に文字化けしたデータが送信されます。

対策: コピーモードでコピーせずに、Tera Termの(アプリとしての)機能を使ってコピーします。コピーしたい範囲をマウスのドラッグ操作で指定してください。なお、tmuxの設定でtmuxに対するマウス操作を有効にしている(設定ファイルでset -g mouse onしている)場合は、Ctrlキーを押したままドラッグで範囲指定してください。

すると、tmuxのコピーモードではなく、ローカル側のTera Termのアプリとしての機能でウィンドウ内の文字列をコピーできます。この場合は、Tera TermがUTF-8でエンコーディングされたバイト列を適切に変換してからローカルのクリップボードにコピーしてくれるので、文字化けは起きません。

投稿2021/02/05 02:43

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EzrealTrueshot

2021/02/05 02:50

>対策: コピーモードでコピーせずに、Tera Termの(アプリとしての)機能を使ってコピーします。コピーしたい範囲をマウスのドラッグ操作で指定してください。なお、tmuxの設定でtmuxに対するマウス操作を有効にしている(設定ファイルでset -g mouse onしている)場合は、Ctrlキーを押したままドラッグで範囲指定してください ありがとうございます! ctrlキーを押しながらマウスでの操作で無事に文字化けせずにコピペできました。 自分は今まで tmux の vimモードのキーボード操作でコピーを行っていた(スピード・効率重視)のですが、このctrlキーを押しながらのマウス選択をキーボードで実装することは不可能でしょうか;?
Daregada

2021/02/05 03:17 編集

不可能。 この回答の要点は、「tmuxのコピーモードでコピーしてクリップボードに渡すと文字化けする」ので、「tmuxのコピーモードを使わずにローカル側でコピーしよう」というものです。 Ctrlキーを押したままドラッグすると、リモート側には何の情報も伝えられず、リモート側から何の情報も受け取らず、ローカル側のTera Termの画面(用のバッファ)にすでに表示されている文字をコピーします。 日本語が含まれていない場合は、今までの操作でいいのでは。
EzrealTrueshot

2021/02/05 04:07

はい、ありがとうございました!
guest

0

状況から、tmuxのクリップボードアクセス機能を使って、Tera Term経由でクリップボードへの書き込みが行われていると思われます。
この機能は現在のところTera Term側で文字コードの変換を行っていないため文字化けが発生します。
tmux側のコピー機能を使わずにTera Term側でコピーする為に、Controlキーを押しながらマウスで文字列を選択してみてください。

bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "win32yank.exe -i"

もしかして、コピーを行うのにこの設定(コピーモードで選択してEnterを押す)を使っていますか?

tmuxはコピーモードでコピーを行うと、デフォルトで端末のクリップボードアクセス機能を使ってコピーした内容をクリップボードへ書き込もうとします。
Tera Termはクリップボードアクセス機能を提供していますので、tmuxからのクリップボード書き込み要求を受け入れてクリップボードへの書き込みを行いますが、前述したように現在のところ文字コード変換が行われず漢字等は文字化けします。

コピーを行う時に上記設定を使っているのならば、おそらくwin32yank.exeによるクリップボード書き込みの後にtmuxのデフォルトのクリップボード書き込み機能で文字化けしたデータで上書きされてしまっていると思われます。
tmuxのデフォルトのクリップボード書き込み機能で上書きしないようにする為に以下のいずれかを行ってみてください。

  • ~/.tmux.confset-option -s set-clipboard offを追加する
  • Tera Termの「設定(Setting)」-「その他の設定(Additional Setting)」-「制御シーケンス(Control Sequence)」にある「リモートからのクリップボードアクセス(Clipboard access from remote)」を無効(off)にする

ただし、この設定を行うとマウスで選択した時のクリップボード書き込みも行われなくなるので、最初に書いたようにマウスでの選択時はControlキーを押しながら行うようにする必要があります。

投稿2021/02/05 02:08

doda

総合スコア947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EzrealTrueshot

2021/02/05 02:38

ありがとうございます! >Tera Termはクリップボードアクセス機能を提供していますので、tmuxからのクリップボード書き込み要求を受け入れてクリップボードへの書き込みを行いますが、前述したように現在のところ文字コード変換が行われず漢字等は文字化けします。 納得しました; あきらめて他ターミナルを探してみようと思います。 教えて頂いた2点をそれぞれやったのですが、やはり文字化けが起きてしまいました;
EzrealTrueshot

2021/02/05 02:39

*追記(↑のコメントの修正) Clipboard access from remote を off にすると、コピーができない状態となりました。 set-option -s set-clipboard off のほうは文字化けがおきました。
guest

0

teratermには、エンコードの設定があったと思います。
デフォルトでは、たしかUTF-8だったかと。

一方、日本語OSにおけるWindowsのメモ帳や各種エディタは、Shift-JISだったかと。
※最近はUTF-8のものもあるっぽいです。

エンコードが異なっているため、文字化けが起きていると
予想します。

Ubuntu側がUTF-8となっているようですので、
エディタにてエンコードをUTF-8に変更した上で貼り付けていただければ、
解消するかと思います。

ようするに、teratermのエンコードとテキストエディタのエンコードを合わせてみましょう、
ということです。

投稿2021/02/04 13:36

WhiteTempest

総合スコア404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EzrealTrueshot

2021/02/04 13:50

terapadというテキストエディタで UTF-8 に変更した状態で利用したのですが、やはり文字化けがおきてしまっております。
Daregada

2021/02/04 14:02 編集

原因はtumxだったようで。
EzrealTrueshot

2021/02/04 14:03

最新のバージョン4.105で試してみましたが、文字化けをおこしてしまいました。
EzrealTrueshot

2021/02/04 14:04

tmux を利用すると文字化けが起きてしまうのでしょうか!?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問