2011-06-15 23 views
2

私はMacでMySQLでvelosurfを使用していますが、エンコーディングの問題はありませんが、Linuxマシンに切り替えるとvelosurfから取得した値は正しくエンコードされません。MySQL接続文字セットの問題

デフォルトの接続文字セットで問題が発生する可能性があることがわかりました。 Mac上で私が得た:

mysql> show variables like "collation_%"; 
+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | utf8_general_ci | 
| collation_database | utf8_general_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec) 

mysql> show variables like "character_set_%"; 
+--------------------------+--------------------------------------------------------+ 
| Variable_name   | Value             | 
+--------------------------+--------------------------------------------------------+ 
| character_set_client  | utf8             | 
| character_set_connection | utf8             | 
| character_set_database | utf8             | 
| character_set_filesystem | binary             | 
| character_set_results | utf8             | 
| character_set_server  | latin1             | 
| character_set_system  | utf8             | 
| character_sets_dir  | /usr/local/mysql-5.5.11-osx10.6-x86_64/share/charsets/ | 
+--------------------------+--------------------------------------------------------+ 
8 rows in set (0.00 sec) 

Linuxマシン上で、私は持っているものの:

mysql> show variables like 'collation_%'; 
+----------------------+-------------------+ 
| Variable_name  | Value    | 
+----------------------+-------------------+ 
| collation_connection | latin1_swedish_ci | 
| collation_database | utf8_general_ci | 
| collation_server  | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec) 

mysql> show variables like 'character_set_%'; 
+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | latin1      | 
| character_set_connection | latin1      | 
| character_set_database | utf8      | 
| 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) 

私は、データベースを作成するときに、データベースの照合と文字セットが設定されています。私の問題は、クライアント/接続/結果のデフォルトの文字セットを変更できないことです。

また、接続開始時にvelosurfで文字セットを設定する方法はありません。

提案がありますか?

+2

'set names utf8;' –

答えて

1

rootとして接続するときにMySQLが常にデフォルトの文字セットを使用することがわかりました。しかし、限られたユーザーにとってはうまくいく(最初からやっていたはずのこと)。

この「機能」はLinux固有のようです。少なくともそれはOS Xでは起こりません。

+0

私はroot以外のユーザー名で、それでも同じことをテストしました。 – Salar

1

MySQLが文字セットを設定するためのコマンドラインフラグがあります。あなたはそれを試すことができますか? --default-character-set = utf8

+0

彼が話していることかもしれませんし、 '--default-character-set = utf8'は定義された文字セットを上書きしないようですinini/.cnfで指定します。私のWindows MariaDBのインストールには.iniもなく、 '--default-character-set = utf8'はデフォルトのlatin1を上書きしません。 – JohnB