MySQLからの出力が文字化けする(シェルスクリプト利用時)


MySQLからの出力が、

  1. 直接sqlを実行すると化けない
  2. シェルスクリプトから実行すると、文字化けする

という現象に困っています。  
シェルのロケールの問題かと思うのですが、  
今のところ解決しておりません。  
もしお知恵をお貸しいただけるなら助かります。  
以下、サンプルコードと環境を記しておきます。

* * *

次のようなテーブルを作成し、データをINSERTしたとします。

[code]

    CREATE TABLE sori (
           ID int NOT NULL UNIQUE, 
           name varchar(50)
    );
    
    INSERT INTO sori (ID, name) VALUES (0, '安部晋三');
    
[/code]

出力用のファイルを用意します。

[code]

    $ cat backup.sql 
    use test;
    
    SELECT * FROM sori ORDER BY ID;
    
[/code]

上記のsqlを実行するシェルスクリプトです。(ユーザ名を隠してあります)

[code]

    $ cat backup.sh 
    #!/bin/sh
    
    output_file_name=/home/***/test.data
    mysql -u root -p < /home/***/backup.sql > $output_file_name
    
[/code]

直接、sqlを実行すると、文字化けしません。

[code]

    $ mysql -u root -p < backup.sql > test2.data
    Enter password: 
    
    $ cat test2.data 
    ID  name
    0   安部晋三
    
[/code]

次に、シェルスクリプトを介して、出力します。

[code]

    olive:~$ ./backup.sh 
    Enter password: 
    
    $ cat test.data 
    ID  name
    0   å®‰éƒ¨æ™‹ä¸‰
    
[/code]

こんな感じです。

ロケールですが、

[code]

    $ echo $LANG
    ja_JP.utf8
    
[/code]

となっております。

最後に環境です。

[code]

    $ cat /etc/redhat-release 
    CentOS Linux release 7.3.1611 (Core) 
    
    $ rpm -qa | grep mysql
    mysql-community-libs-5.6.37-2.el7.x86_64
    mysql-community-devel-5.6.37-2.el7.x86_64
    mysql-community-release-el7-5.noarch
    php-mysql-5.4.45-13.el7.remi.x86_64
    mysql-community-client-5.6.37-2.el7.x86_64
    mysql-connector-odbc-5.3.9-1.el7.x86_64
    mysql-community-common-5.6.37-2.el7.x86_64
    mysql-community-server-5.6.37-2.el7.x86_64
    
[/code]

よろしくお願いします。




テーブル定義のカラムのcharsetがlatin1になっているような感じに見えます。

`show create table sori;` でテーブルの charset が確認できると思います。

直接SQL実行時とシェルスクリプト実行時とで実行しているユーザーは同一でしょうか。  
もし異なるのであれば `$HOME/.my.cnf` に違いはないでしょうか。

あと LANG 以外の LC_* の環境変数にも影響を受けます。




テーブル定義のカラムのcharsetがlatin1になっているような感じに見えます。

`show create table sori;` でテーブルの charset が確認できると思います。

直接SQL実行時とシェルスクリプト実行時とで実行しているユーザーは同一でしょうか。  
もし異なるのであれば `$HOME/.my.cnf` に違いはないでしょうか。

あと LANG 以外の LC_* の環境変数にも影響を受けます。

