I write this note in Japanese, because this note will helps Japanese character set problem.
MySQLでの日本語の文字化け
Dockerなんかで動いているMySQLにログインして、SELECTしてみると、日本語が文字化けして読めないなんてことがあるかと思います。
たとえば、こんな感じです。
mysql> select post_type, post_title from wp_posts where ID = 21787;
+-----------+--------------+
| post_type | post_title   |
+-----------+--------------+
| blog      | ????????BBQ! |
+-----------+--------------+
1 row in set (0.00 sec)
文字コードを調べてみると、latin1という日本語が使えなさそうな文字コードになっています。
mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
このセッションで使う文字コードをutf8にして、日本語が表示できるようにしましょう。
mysql> CHARSET utf8;
Charset changed
再度、さきほどのレコードを取り出してみます。
mysql> select post_type, post_title from wp_posts where ID = 21787;
+-----------+--------------+
| post_type | post_title   |
+-----------+--------------+
| blog      | たのしいBBQ!  |
+-----------+--------------+
1 row in set (0.00 sec)
補足: (試してませんが)今後は絵文字対応などが入ってきますので、 CHARSET utf8mb4 のほうがいいかもしれません。
Docker環境内のRails consoleの日本語文字化け
Dockerfile の環境変数LANGにUTF-8を設定します。
FROM ruby:2.6.3
# railsコンソール中で日本語入力するための設定
ENV LANG C.UTF-8
binding.pryでの日本語の文字化け
🤔状況
日本語を入力すると「文字コード変換が定義されていない」エラーが出てしまう。
Encoding::UndefinedConversionError:
       "\xE3" from ASCII-8BIT to UTF-8
🦄 基本的な対応
pryのヒストリを使わなくする(参考)。
# ~/.pryrc
Pry.config.history.should_save = false
ただし、「rb-readline」というgemを使っている場合は、うまくいかないので次の方法を試してください。
👍 再インストール
まずは普通にアンインストールする
rbenv uninstall 2.x.x
次に、以下のようなオプションをつけてrbenvでインストールを行います。
# CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline`" rbenv install 2.x.x
RUBY_CONFIGURE_OPTS=--with-readline-dir=`brew --prefix readline` rbenv install --verbose 2.x.x
🦄 最終手段
NKFを使う
[2] pry> find("���������������")  #=> Encoding::UndefinedConversionError: "\xE8" from ASCII-8BIT to UTF-8
[4] pry> Encoding.default_external  #=> #<Encoding:UTF-8>
[5] pry> require 'nkf'              #=> false
[6] pry> Encoding.default_internal  #=> #<Encoding:UTF-8>
[7] pry> 'a'.encoding               #=> #<Encoding:UTF-8>
[8] pry> '���'.encoding             #=> #<Encoding:ASCII-8BIT>
click_link NKF.nkf('-w','リンクをクリックしてください')
また問題を見つけたら、追記していきたいと思います。
 
 
              
 
    
Top comments (0)