MySQLからの出力が、

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

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


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

CREATE TABLE sori (
       ID int NOT NULL UNIQUE, 
       name varchar(50)
);

INSERT INTO sori (ID, name) VALUES (0, '安部晋三');

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

$ cat backup.sql 
use test;

SELECT * FROM sori ORDER BY ID;

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

$ cat backup.sh 
#!/bin/sh

output_file_name=/home/***/test.data
mysql -u root -p < /home/***/backup.sql > $output_file_name

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

$ mysql -u root -p < backup.sql > test2.data
Enter password: 

$ cat test2.data 
ID  name
0   安部晋三

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

olive:~$ ./backup.sh 
Enter password: 

$ cat test.data 
ID  name
0   安部晋三

こんな感じです。

ロケールですが、

$ echo $LANG
ja_JP.utf8

となっております。

最後に環境です。

$ 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

よろしくお願いします。