🐱

ターミナルで日本語をペーストすると空文字になる問題の解決方法

に公開

はじめに

macOS上のCursor IDE統合ターミナルからDockerコンテナ内のMySQLにアクセスした際、日本語をペーストすると何も表示されず空文字になる現象が発生した。Dockerを利用した開発環境でのみ発生した。

やったこと

mysql 内の文字コードを確認

mysql側の文字コードは問題ない。
(というかこれ調べたが、ターミナル上の話なので検討違いの調査をしている説が高い)

mysql> status

--------------
mysql  Ver 8.0.32 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:          9
Current database:       core
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         8.0.32 MySQL Community Server - GPL
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:            /var/run/mysqld/mysqld.sock
Binary data as:         Hexadecimal
Uptime:                 40 min 46 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 214  Flush tables: 3  Open tables: 133  Queries per second avg: 0.033

--------------

Dockerコンテナ内のロケール設定を確認

ロケール設定を確認したが、空。
これが原因だった

bash-4.4# echo $LANG

bash-4.4# echo $LC_ALL

解決策

短期的には以下で良い

export LANG=C.UTF-8
export LC_ALL=C.UTF-8

永続的に解決する場合はdocker-compose.yml などに環境変数を設定

ロケール設定って何

文字コードの指定とかをしておかないと、ペーストsあれたUTF-8を解釈できないらしい。

Discussion