はじめに
SQLの勉強を行なっている際、
terminalでDBへ日本語の文字データをinsertしようとしたところ、日本語が認識されないことがあった。
原因と対応内容をメモ。
実行環境
- OS:mac M1
- Terminal: iTerm2
- MySQL
事象
teamsテーブルへ日本語文字列を含むチームデータを追加(insert)しようとしたところTerminalで認識されなかった(入力しても反応しなかった)。
※teamsというテーブルへ追加する。
追加するデータ
id | name |
---|---|
1 | 広島カープ |
2 | ヤクルトスワローズ |
3 | 横浜DeNAベイスターズ |
4 | 阪神タイガーズ |
5 | 中日ドラゴンズ |
6 | 巨人ジャイアンツ |
入力したコマンド
別のテキストエディアでコマンドを作成し、terminalへ貼り付けるとチーム名部分(日本語)が抜け落ちる。
INSERT INTO teams
(id, name)
VALUES
(1, ''),
(2, ''),
(3, ''),
(4, ''),
(5, ''),
(6, '');
原因と対応
原因はbashの文字コードが問題だった。
まず現在の文字コードの確認。
terminal
locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=
.bash_profileに下記を追加する。
※.bash_profileはコマンド(シェル)の設定ファイル(不可視ファイル)
vi ~/.bash_profile
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
.bash_profileの変更を反映する。
source ~/.bash_profile
これで日本語が打てるようになる!