FC2ブログ


全件表示TopRSSAdmin
MYSQL4.1以降 文字化け 対処 方法
2005 / 05 / 26 ( Thu )

~MySQLマスター シュガー様 に教えていただきました~

MYSQL4.1以降から激しく文字化け問題が出ているよう。
それはマルチバイトな多言語に対応しているために、この問題が発生しているようだ。
Fedora Core はデフォルトの文字が「UTF-8」などになっており
Linuxを使用した開発で文字コードは「UTF-8」になりつつあるよう。

MYSQLは4.0系でならば文字化け問題はさほど起こらないので
MYSQLは4.0系を推奨するが
今後のことを考えると「UTF-8」などの文字化け対策は経験しておく必要があるだろう。

インストールしているMSQLのバージョン
*************************************************************
mysql  Ver 14.9 Distrib 5.0.4-beta, for pc-linux-gnu (i686)

Connection id:          377
Current database:       データベース名
Current user:           ユーザ名@ホスト名
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.4-beta-Max-log
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    ujis
Db     characterset:    utf8
Client characterset:    ujis
Conn.  characterset:    ujis
UNIX socket:            /var/lib/mysql/mysql.sock
*************************************************************

my.cnfファイルは、自分で作成しないと存在しない。
なので、サンプルファイルを使って作成する。
サンプルファイルの場所は、バージョンによって異なるが、以下のディレクトリ場所にたいがいあるのではないかと。

/usr/share/doc/MySQL-server-5.0.4/my-medium.cnf
/usr/share/mysql/my-medium.cnf

で、/etc 配下にコピーして編集する。

root# cp /usr/share/doc/MySQL-server-5.0.4/my-medium.cnf /etc/my.cnf

 

my.cnf----------------------------------------------------------
# サーバ設定
[mysqld]
default-character-set=ujis

[client]
default-character-set=ujis

# mysql (標準client) 使用時設定
# mysql (標準client) に対して [client] での設定を上書き
[mysql]
default-character-set=ujis

# mysqldump 使用時設定
# mysqldump に対して [client] での設定を上書き
[mysqldump]
default-character-set=ujis
----------------------------------------------------------------
以上を設定したのち
テーブルを作成

 

CREATE DATABASE時に文字コードを設定しないとlatin1になってしまう。

mysql>CREATE DATABASE table;
mysql>SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       |
| character_set_connection | ujis                       |
| character_set_database   | latin1                     |
| character_set_results    | ujis                       |
| character_set_server     | ujis                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

character_set_system utf8 とあるように
MYSQL本体はUTF-8で動作しているっぽい為、文字コードをUTF-8に設定

CREATE DATABASE table CHARACTER SET utf8;
mysql>SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       |
| character_set_connection | ujis                       |
| character_set_database   | utf8                       |
| character_set_results    | ujis                       |
| character_set_server     | ujis                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

JavaでJDBCでMYSQLに接続の時に「接続先DBはUTF-8」なので
jdbc:mysql://ホスト名/table?user=***&password=***&useUnicode=true&characterEncoding=utf8"

以上で文字化けが解消された。


参考URL
http://www.dear-jpn.com/dear/20050409.documents
http://iandeth.dyndns.org/mt/ian/archives/000108.html
http://oss.timedia.co.jp/index.cgi/kahua-web/show/MySQL%c6%fc%cb%dc%b8%ec%a4%ce%ce%b9
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ#fb74bab6


■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
またJDBCでMYSQLサーバーに接続できない場合
#mysql mysql -root -p
mysql>select Host,User from user;
+-----------+-----------+
| Host      | User      |
+-----------+-----------+
| 127.0.0.1 | hoge      |
| db        |           |
| db        | root      |
| localhost |           |
+-----------+-----------+

ホスト名とユーザ名が明示されていないので接続が出来ない。
mysql>GRANT Select,Update,Insert,Delete ON テーブル名.* TO ユーザ名@ホスト名 IDENTIFIED BY 'パスワード';
以上を実行すると
+-----------+-----------+
| Host      | User      |
+-----------+-----------+
| 127.0.0.1 | hoge      |
| db        |           |
| db        | root      |
| localhost |           |
| ホスト名  | ユーザ名  |
+-----------+-----------+

ホスト名・ユーザ名が追加され、接続が可能になる。

参考URL
http://myna2.mysql.gr.jp/mysqlml/mysql/msg/5252



17 : 49 : 35 | トラックバック(0) | コメント(0) | page top↑
<<YAMAHA RTX1000 (Rev.7.01.41) | ホーム | OSPFの設定 (stubネットワークの場合)>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://redhatman.jp/tb.php/26-439570d6
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |