xampp:Mysqlに関するPHPMyAdminの文字化け

来源:互联网 发布:java 解析torrent 编辑:程序博客网 时间:2024/04/30 06:43

xamppを入れたのですが、PHPMyAdminでの日本語データ操作時に文字化けが発生。色々と他の方々の事例を調べてあれやこれやと試してやっとこ解決。そのメモを。


■環境
ApacheFriends XAMPP (basic package) version 1.5.3a
・Apache 2.2.2
・MySQL 5.0.21
・PHP 5.1.4 + PHP 4.4.2-pl1 + PEAR
・phpMyAdmin 2.8.1


■試したこと
1)my.cnfの各項目に以下のコードを追加 → 解決せず

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqldump] 
default-character-set = utf8

[mysql] 
default-character-set = utf8

2)phpMyAdminフォルダ内のconfig.inc.phpの文字設定をutf-8に変更 →解決せず

$cfg['DefaultLang'] = 'utf-8';
$cfg['DefaultCharset'] = 'utf-8';

3)phpMyAdminで作成したテーブルの照合順序をLatin1~からutf8_unicode_ciに変更
  →phpMyAdmin内の文字化け解消!

照合順序の変更の詳しい手順は他に掲載されていると思うのではしょって説明すると、phpMyAdmin画面で、左側のフレームよりテーブルを選択した後、右側の画面の上にある「操作」を押すと、テーブルのオプションで照合順序などもろもろ変更することができます。


これで、とりあえず解決したと思ったのですが、今度はPHPでSQLからデータを取り出す際、文字化けがまだ発生していて、解決ならず。

4)これは呼び出すPHP側で文字コードの指定することにより解決しました。
SQLからデータを呼び出すphpの中で以下の命令をSQLに送信。

$sql = "SET NAMES sjis"; // SET CHARACTER SET SJISでも確認できました
$result = mysql_query($sql);

追記

文字化け関連の単語検索でたどり着いている人が結構いるみたいなので、他の文字化け要因となりえる可能性を掲載します。


チェックすること
・データベースに送信するクライアント側の文字コードとデータベースの文字コードは同じか?
(XAMPPの2.8の場合DBはUTF-8)、PHPなどからデータベースにアクセスする際HTMLとPHPの文字コードがUTF-8になっているか確認を。FlashからPHPを介してデータベースに格納する場合なども同様。もしクライアント側がPHPで書かれていて文字コードSJISなどの場合、mb_convert_encoding(変数,"変更したい文字コード","元の文字コード")関数を使用して文字コードを変更してやる必要があります。

変数$textに入った内容の文字コードを変更
=====================================
$text = "あいうえお";
$text = mb_convert_encoding($text,"UTF-8","SJIS");

・他、Flash-PHP-DBなどの構成をしている場合、Flashから送られている内容がPHPが受け取った段階で文字化けしていないかなど確認するなど、一つ一つ原因をつぶしていくと解明するのではと思います。

原创粉丝点击