2008年11月20日

[mysql 14697] Re: UTF-8環境の文字化けに関して

tuchida さん

どうも今井です。

> 「Server characterset」は
> 「mysqld」デビジョンで
> character-set-server = utf8
> と指定すればよいのでしょうか?


はい、[mysql] に default-character-set=utf8 を追記してください。
再起動後、再度 status コマンドで確認していただければ
Server characterset および Db characterset が utf8 に
なっているかと思われます。

問題なく修正されているようでしたら
今までの流れ上、Insert していた日本語データは再度
入れなおしを行った方が良いかと思われます。

latin1 に utf8 のデータが入っていたのを
latin1 から utf8 に変更したため
文字化けが更に文字化けしたような状態になっているかもしれませんので。

全て utf8 になっている状態で、データを入れなおし
それでもダメな場合、更に [mysqld] に以下の項目を
追加してみると改善するかもしれません。
init-connect='SET CHARACTER SET utf8;'
skip-character-set-client-handshake

> skip-character-set-client-handshake
に関して、既に記述されている場合は
逆に消してみたりして動作を確認してみてください。

Tuchida さんは書きました:
> tuchidaです。
>
> お世話になっております。
>
> 今井さんの御指摘のStatusですが
>
> mysql Ver 14.7 Distrib 4.1.13, for suse-linux (i686) using readline 5.0
>
> Connection id: 171
> Current database: v55Ancate
> Current user: root@xxxxx
> SSL: Not in use
> Current pager: less
> Using outfile: ''
> Using delimiter: ;
> Server version: 4.1.13
> Protocol version: 10
> Connection: Localhost via UNIX socket
> Server characterset: latin1
> Db characterset: latin1
> Client characterset: utf8
> Conn. characterset: utf8
> UNIX socket: /var/lib/mysql/mysql.sock
> Uptime: 27 days 1 hour 35 min 48 sec
>
> となっています。
> 特に
> 「Server characterset」と「Db Characterset」が私も気になるのですが
> my.cnfの指定がわかりません。
>
> 「Server characterset」は
> 「mysqld」デビジョンで
> character-set-server = utf8
> と指定すればよいのでしょうか?
>
>> はじめまして今井です。
>>
>> 根本的に、MySQL が UTF-8 の設定を正常に認識しているのかが気になります。
>>
>> status コマンドで出力される結果に
>>
>> Server characterset: utf8
>> Db characterset: utf8
>> Client characterset: utf8
>> Conn. characterset: utf8
>>
>> と出力されていますか?
>> PHP のサーバーと MySQL のサーバーが1台で構成されている
>> オールインワン構成であればそのまま、複数台構成であれば
>> DB(MySQL) サーバーおよび WEB(PHP) サーバーから
>> DB に接続して status コマンドを実行してみてください。
>> DB サーバーでは問題ないが、クライアントサーバーから接続したら
>> 文字コードが latin1 になってしまう等の現象もありますので。
>>
>> また、my.cnf の mysqld 項に
>> skip-character-set-client-handshake
>> も記述してみてください。
>>
>>
>> Tuchida さんは書きました:
>>> tuchidaです。
>>>
>>> 先ほどのINSERT文が成功したのですが、これはコマンドラインで
>>> 行ったときも同じですが漢字の文字化けが発生しています。
>>> 条件としては以下の通りです。
>>>
>>> 1.Mysqlのバージョンは4.1.13で、phpは4.4.0です。
>>>
>>> 2.OSは SUSELinux10.0 内部コードはUTF-8です
>>>
>>> 3.my.cnfで
>>> [safe_mysqld]、[mysql_dump]、[mysql]セクションで
>>> default-character-set = utf8
>>> と指定しています。
>>>
>>> 4.元になっているデータはWebからの漢字データです。
>>>
>>>
>>>
>>>
>>
>>
>>
>> __________ ESET Smart Security からの情報, ウイルス定義データベースのバー
> ジョン 3626 (20081119) __________
>> このメッセージは ESET Smart Security によって検査済みです。
>>
>> http://canon-its.jp
>>
>>
>
>
>
>


投稿者 xml-rpc : 2008年11月20日 16:26
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/79248
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。