人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL の文字コードについて。

基本的に UTF-8 のエンコードで利用しているサーバに EUC-JP のデータベースを作成し、データをインポートしたいのですが、EUC-JP ではなく UTF-8 でインポートされてしまいます。

どのように設定すれば EUC-JP のままデータをインポートできるでしょうか。

my.cnf:
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

mysql> status;
--------------
mysql Ver 14.12 Distrib 5.0.24a, for pc-linux-gnu (i486) using readline 5.1
Server version: 5.0.24a-Debian_9-log
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: ujis
Client characterset: ujis
Conn. characterset: ujis
mysql> show variables like "char%";
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |

●質問者: typos24
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Char Client dB EUC-JP GNU
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● Yota
●0ポイント

データベースを作るとき

>CREATE DATABASE hoge DEFAULT CHARACTER SET ujis ;

でどうでしょう。

指定しなければutf8でつくられるので。

◎質問者からの返答

すみません、文字数で怒られたので削ったのですが、その辺は一通り試しています。

コメントに書いておくべきでした。

mysqldump したファイルにも set names ujis を追記してインポートを試しています。


2 ● b-wind
●0ポイント

character_set_database が ujis であるならば、変換されるので UTF-8 での格納は基本的には無理。

set names ujis;

これはクライアント側のコード指定なので、サーバーに格納される文字コードとは直接関係が無い。


失礼ですが、何を持って UTF-8 でインポートされていると判断したのかをお伺いしたい。

◎質問者からの返答

skip-character-set-client-handshake 設定しても変換が行なわれるということですか?

UTF-8 なサーバに EUC-JP なデータベースを作成し、EUC-JP なデータをインポートしたいんです。

なぜそう判断したかというと、GNU screen のエンコードを変更すると UTF-8 では正しく表示されますが、EUC-JP だと化けてしまうためです。

利用するWebアプリでも化けてしまっているので間違いないだろう、と。。


3 ● hamster001
●20ポイント

ここがくわしいです。注意点としてはコンパイル時にbinaryが指定してあること、phpmyadminは選んだ文字コードに変換して画面表示するのであてにならないこと、です。

http://vivian.reverb.jp/mysql4.1.html


4 ● b-wind
●25ポイント

skip-character-set-client-handshake 設定しても変換が行なわれるということですか?

これはクライアントが使用する文字コードの設定を一律にサーバーの文字コードの設定と同じにすると言う事です。

変換自体は必要に応じて行われます。


mysqldump でダンプしたファイル自体の文字コードはどうなっていますか?

◎質問者からの返答

なるほど…勉強になります。

ファイルのエンコードは問題なくEUC-JPになっています。念のためエディタで変換してみても結果は同じでした。


5 ● Yota
●45ポイント

character_set_database ujisでも

character_set_server utf8なら無意味ということですね。

それでは、ujis用のmy.cnfを作っておいてサーバーを起動するというのはどうでしょう。

$mysqld_safe --defaults-file=/etc/my_ujis.cnf &

◎質問者からの返答

そのようですね…。

ただ、これだと別のポートで起動する必要がありますよね?あくまでメインは UTF-8 なので。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ