電子書籍の厳選無料作品が豊富!

いつもお世話になっております。

xamppをインストールし、開発を行っております。
formでsubmitし、DBに登録すると文字化けを起こします。

MySQLは下記項目を追加しました。
C:\xampp\mysql\bin\my.ini
--------------------------------------------------
[client]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
character_set_server=utf8
init-connect=SET NAMES utf8
(ここに default-character-set = utf8 を追加するとMySQLが起動しなくなります。)

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8


php.iniは下記のように設定してあります。
php.ini
--------------------------------------------------
mbstring.detect_orderauto
mbstring.encoding_translationOff
mbstring.func_overload0
mbstring.http_inputUTF-8
mbstring.http_outputUTF-8
mbstring.http_output_conv_mimetypes^(text/|application/xhtml\+xml)
mbstring.internal_encodingUTF-8
mbstring.languageJapanese
mbstring.strict_detectionOff
mbstring.substitute_characterno value


日本語が正しく登録されていれば、表示は正しくされます。
おかしな部分、足りない部分等ありましたら、ご教示ください。

よろしくお願いいたします。


[環境]
 MySQL:5.5.8
 PHP:5.3.5
 xampp:1.7.4

A 回答 (1件)

まず、事実確認から。


問題になっているphpのアプリから、SQLを入力できる状態で、

show variables like '%char%'

で、実際に有効になっている文字コードを確認してください。
そして、latan1などになっているなら、MySQL接続後、

set names 文字コード

を最初に投げてみてください。

不確かな情報ではありますが、

init-connect=SET NAMES 文字コード

が、php等で権限がらみなのか「効かない」といった記事がたくさんあるようです。事実確認、要因などは不明ですが、まずは実際、質問者さんの環境がどういう状況になっているのか、これにより回避可能かを試す価値はあるでしょう。

>default-character-set = utf8 を追加するとMySQLが起動しなくなります

MySQL 5.1くらいから告知されていましたが、MySQL 5.5で、mysqldでのパラメタのキーワードが変更され

default-character-set は、廃止

character_set_server が追加

されました。

一方、クライアントなどは従来通り

default-character-set

であり、紛らわしい状況になっています。

この回答への補足

chukenkenkouさん、ご回答ありがとうございます。

> show variables like '%char%'
を実行した結果、以下のようになりました。

character_set_clientutf8
character_set_connectionutf8
character_set_databaseutf8
character_set_filesystembinary
character_set_resultsutf8
character_set_serverutf8
character_set_systemutf8
character_sets_dirC:\xampp\mysql\share\charsets\

PHPのプログラムも全てutf-8で統一しております。

補足日時:2011/04/22 11:16
    • good
    • 0
この回答へのお礼

phpMyAdminでいろいろ確認したところ、DB全体の照合順序がlatin1_swedish_ciになっておりました。
個々のテーブルはutf8_unicode_ciになっていたのですが・・・

ありがとうございます。

お礼日時:2011/04/22 17:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!