2008年11月20日

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


tuchida さん。

今井です。

skip-character-set-client-handshake は
MySQL バージョン 4.1.15 以降
MySQL バージョン 5.0.13 以降

に追加されたオプションでした、スイマセン。

> Db characterset: latin1
こちらに関して。
設定を utf8 にしても、既に latin1 で作成されている DB のため
DB を選択すると、latin1 として処理をしようとするので
そのような status 結果になります。

一度、該当 DB を DROP して作成しなおすことをオススメします。

Tuchida さんは書きました:
> tuchidaです。
>
> 今井さんの御指摘の
> default-character-set=utf8
> init-connect='SET CHARACTER SET utf8;'
>
> を指定したところ
> (skip-character-set-client-handshakeはエラーとなりました)
> データベースを指定しない(全体の状態)のステータスは
>
> Server characterset: utf8
> Db characterset: utf8
> Client characterset: utf8
> Conn. characterset: utf8
>
> となるのですがUSEで対象のデータベースに移行すると
> Server characterset: utf8
> Db characterset: latin1
> Client characterset: utf8
> Conn. characterset: utf8
>
> となってしまいます。
> 当然のこと結果も同じなのですが
> データベースを作り直したほうが良いのでしょうか?
>
> ----- Original Message -----
> From: "Akio Imai" <tegona@xxxxx>
> To: <ml@xxxxx>
> Sent: Thursday, November 20, 2008 4:26 PM
> Subject: [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
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>> __________ ESET Smart Security からの情報, ウイルス定義データベースのバー
> ジョン 3626 (20081119) __________
>> このメッセージは ESET Smart Security によって検査済みです。
>>
>> http://canon-its.jp
>>
>>
>
>
>
>


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




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