🐱
ターミナルで日本語をペーストすると空文字になる問題の解決方法
はじめに
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