ConectTheDots314
@ConectTheDots314

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ターミナル上で日本語が文字化けしてしまう

1. 【必須】やりたい・やりたかったこと

テーブルをターミナルで表示させたい

内容はこちら
https://gyazo.com/a883b2240947cd78e792ede9a22cbd80

2. 【必須】起きている問題やエラーメッセージ

mysql> SELECT * FROM users;
+----+-----------------+---------------------+------+--------------+
| id | name            | yomigana            | age  | birthplace   |
+----+-----------------+---------------------+------+--------------+
|  1 | 蟷ウ蟯。譁ー荳\        | Hiraoka Shinichi    |   20 | 譚ア莠ャ驛ス       |
|  2 | 蟆剰・ソ蠢鈴國        | Konishi Shion       |   25 | 譚ア莠ャ驛ス       |
|  3 | 蜍晉伐蠢�オ�        | Katsuta Kokone      |   26 | 豐也ク�恁       |
|  4 | 蟆丞哨蜆ェ闃ア        | Koguchi Yuka        |   22 | 蜈オ蠎ォ逵�       |
|  5 | 蛹礼伐逅エ髻ウ        | Kitada Kotone       |   17 | 蟯ゥ謇狗恁       |
|  6 | 譟ウ豐「逶エ蜷�        | Yanagisawa Naokichi |   39 | 螟ァ髦ェ蠎�       |
|  7 | 髟キ蟠主鴻菴仙ュ�      | Nagasaki Chisako    |   34 | 遖丞イ。逵�       |
|  8 | 鬮倡\ャ螟ェ髯ス        | Takase Taiyou       |   55 | 蝓シ邇臥恁       |
|  9 | 荳ュ譚醍Ⅸ          | Nakamura Teru       |   32 | 逾槫・亥キ晉恁     |
| 10 | 蝮ェ逕ー蟄晏ソ�        | Tsubota Takashi     |   50 | 譚ア莠ャ驛ス       |
+----+-----------------+---------------------+------+--------------+
10 rows in set (0.00 sec)

mysql> 

3. 自分で試したこと

shouminotaku@shouminakunoAir ~ % echo $LANG
ja_JP.UTF-8

ja_JP.UTF-8に設定するも変わらず。

.bash_profile

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

ターミナル

Last login: Wed Feb 22 17:31:52 on ttys001
shouminotaku@shouminakunoAir ~ % echo $LANG
ja_JP.UTF-8
shouminotaku@shouminakunoAir ~ % vi ~/.bash_profile


export PATH=$PATH:/Applications/XAMPP/bin

eval "$(rbenv init -)"
export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"
export PATH="$PATH:$(brew --prefix)/bin"

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
~                                                                               
~                                                                               
                                                                                                                                            
~                                                                               
"~/.bash_profile" 10L, 257B

そして保存しようとしたが

shouminotaku@shouminakunoAir ~ % source ~/.bash_profile
/Users/shouminotaku/.bash_profile:3: command not found: rbenv

となってしまう

4. 関連するURL ※GithubのリポジトリリンクやサーバーのURLなど

0

1Answer

MySQL側の文字コードの設定はどうなっていますか?
show variables like "chara%";
https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0065
MySQL8系以降であればutf8mb4になっていると思いますが、それ以前だと日本語は文字化けする文字コードになっていたはずです。

テーブルごとの文字コード設定も以下で確認できます。
show create table (テーブル名);

0Like

Comments

  1. 回答いただいてありがとうございます。

    mysql> show variables like "chara%";
    +--------------------------+----------------------------+
    | Variable_name | Value |
    +--------------------------+----------------------------+
    | character_set_client | utf8 |
    | character_set_connection | utf8 |
    | character_set_database | utf8mb4 |
    | character_set_filesystem | binary |
    | character_set_results | utf8 |
    | character_set_server | utf8 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.14 sec)


    テーブルごとの文字コード設定は
    ```
    mysql> show create table users;
    +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | users | CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    `yomigana` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    `age` int(11) DEFAULT NULL,
    `birthplace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
    +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.02 sec)
    ```

    でした。
  2. 以下 やってみたことです。
    ---------------------------------------------------

    squel proと表示が違う
    https://gyazo.com/97729a8dc28f391da960e2ef0d0a92c7

    接続するクライアント側で使用されている文字セットが異なるためかもしれない
    Sequel Proが使用する文字セットを変更することで、ターミナルと同じ結果を得ることできるかも。

    うまくいかない。

    https://gyazo.com/56877c0d0c789f294987467fce43eddb

    ↑を参考にすると既存DBの場合の設定はもう一手間必要なそう。既存テーブルの文字コードを変換する

    ターミナルを再起動する→×




    ターミナル上で文字化けが起こっているのは、おそらくターミナルの文字コードが設定されていない可能性を考えてみる。まず、ターミナルの文字コードをUTF-8に設定してみてください。


    1. 「設定」のタブから、「詳細設定」を選択します。
    2. 「文字セット」の欄で、「Unicode (UTF-8)」を選択します。
    3. https://gyazo.com/de32803e0771687a783e4d66335ba117
    4. 「閉じる」ボタンをクリックして設定を保存します。

    設定を変更したら、ターミナルを再起動し、再度MySQLに接続してSELECT文を実行してみる。
    ```
    mysql> SELECT * FROM users;
    +----+-----------------+---------------------+------+--------------+
    | id | name | yomigana | age | birthplace |
    +----+-----------------+---------------------+------+--------------+
    | 1 | 蟷ウ蟯。譁ー荳\ | Hiraoka Shinichi | 20 | 譚ア莠ャ驛ス |
    | 2 | 蟆剰・ソ蠢鈴國 | Konishi Shion | 25 | 譚ア莠ャ驛ス |
    | 3 | 蜍晉伐蠢�オ� | Katsuta Kokone | 26 | 豐也ク�恁 |
    | 4 | 蟆丞哨蜆ェ闃ア | Koguchi Yuka | 22 | 蜈オ蠎ォ逵� |
    | 5 | 蛹礼伐逅エ髻ウ | Kitada Kotone | 17 | 蟯ゥ謇狗恁 |
    | 6 | 譟ウ豐「逶エ蜷� | Yanagisawa Naokichi | 39 | 螟ァ髦ェ蠎� |
    | 7 | 髟キ蟠主鴻菴仙ュ� | Nagasaki Chisako | 34 | 遖丞イ。逵� |
    | 8 | 鬮倡\ャ螟ェ髯ス | Takase Taiyou | 55 | 蝓シ邇臥恁 |
    | 9 | 荳ュ譚醍Ⅸ | Nakamura Teru | 32 | 逾槫・亥キ晉恁 |
    | 10 | 蝮ェ逕ー蟄晏ソ� | Tsubota Takashi | 50 | 譚ア莠ャ驛ス |
    +----+-----------------+---------------------+------+--------------+
    10 rows in set (0.00 sec)

    mysql>
    ```
    変わらず

    別の角度から考えてみる
    既存のテーブルの内容を日本語でupdateできないだろうか

    しかしそもそもターミナルで
    ”あああ”と打っても””と日本語のみ消えてしまう
    https://zenn.dev/takuyanagai0213/articles/12b258356b57e3

    ↑のブログを参考にしてみる

    ターミナル
    ```
    shouminotaku@shouminakunoAir 2-DB % vi ~/.bash_profile

    eval "$(rbenv init -)"
    export PATH="/Applications/XAMPP/bin:$PATH"
    export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"
    export PATH="$PATH:$(brew --prefix)/bin"

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    ~
    ~
    ~
    ~
    ~
    "~/.bash_profile" 7L, 208B
    ```

    ターミナル
    ```
    source ~/.bash_profile
    ```
    入力して設定を反映させたがターミナル上で日本語を打とうとしても、日本語が含まれるコマンドをコピペしようとしても貼ることができない

    別の記事でトライしてみる
    https://qiita.com/tenten1010/items/ea1a755e9aacc61c669e

    ターミナル
    ```
    shouminotaku@shouminakunoAir 2-DB % 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=
    shouminotaku@shouminakunoAir 2-DB %
    ```

    .bash_profileを編集

    編集前
    ```
    eval "$(rbenv init -)"
    export PATH="/Applications/XAMPP/bin:$PATH"
    export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"
    export PATH="$PATH:$(brew --prefix)/bin"

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    ~
    ~
    ~
    ~
    ~
    ~
    "~/.bash_profile" 6L, 207B
    ```
    編集後
    ```
    eval "$(rbenv init -)"
    export PATH="/Applications/XAMPP/bin:$PATH"
    export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"
    export PATH="$PATH:$(brew --prefix)/bin"
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    ~

    ~
    ~
    "~/.bash_profile" 6L, 207B
    ```
    行が空いていたのを詰めてみた




    ターミナル
    ```
    shouminotaku@shouminakunoAir 2-DB % vi ~/.bash_profile
    shouminotaku@shouminakunoAir 2-DB % source ~/.bash_profile
    shouminotaku@shouminakunoAir 2-DB % locale
    LANG="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_CTYPE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_ALL="en_US.UTF-8"
    shouminotaku@shouminakunoAir 2-DB %
    ```


    しかし後で確認すると
    ```
    shouminotaku@shouminakunoAir 2-DB % 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=
    ```
    LC_ALL= の設定が落ちている なぜか

    https://qiita.com/teruo-oshida/items/08cb84efc2b581b0a439
    この記事を参考にしてみようと思いましたが、先ほどの記事と内容と同じようでした。

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

Your answer might help someone💌