« Emacs導入→即断念_|\●_ | メイン | メモ(電通鬼十則など) »

XAMPP+Yomi-Search(PHP)modified で 文字化け(PHP+MySQL の文字化け)

XAMPP のローカル環境(以前の日記参照→"XAMPPインストールメモ") で Yomi-Search(PHP)modified を設置したところ文字化けが発生。Yomi-Search(PHP) では文字化けはおこらなかった。原因を調べメモ。

■データベースとテーブルの文字コード設定が原因
データベースの文字コード(MySQL 接続照合順序)が初期状態「latin1」のままだったことが直接の原因。phpMyAdmin 上で「ALTER DATABASE `DB名` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci」を実行し文字コードを utf8 へと変更。そして Yomi-Search(PHP)modified を再セットアップすると文字化けは解消した。データベースの文字コードを utf8 へ変更すると、再セットアップ時に各テーブルの文字コードも utf8 になるので、それで文字化けが解消されたのだと推測。よって、再セットアップが無理なら、作成済みの該当テーブルを utf8 へ変更してあげればいいのかなと思います。

----------------------------------------------------

Yomi-Search(PHP)modified での文字化けは解消できたが、その他文字コードの問題解消方法に関していろいろ調べたのでメモ。(utf8 への統一を前提)

http://phpspot.net/php/pgMySQL4.1%8CnUTF-8%82%CC%8F%EA%8D%87.html
http://bono.s201.xrea.com/2006/03/11-utf8_xrea_3/
http://puchiko.lowtech.ne.jp/index.php?itemid=349&catid=27

ようは、「クライアント側の文字コードと、データベース側の文字コードが違うこと」が文字化けの大方の原因らしい。自分ではもろもろ utf8 で統一したつもりでも、PHP側とMySQL側の文字コードがきっとずれてるよ!ということらしいです。

以下文字コードの調べ方から、解決方法をメモ。

■MySQL側の文字コードをチェックする方法
SHOW VARIABLES LIKE 'char%'
を実行する。 ■PHPからMySQLの文字コードをチェックする方法
echo mb_internal_encoding();
を実行する。

■クライアント側の文字コードを設定
スクリプト側にて、MySQLに接続後、毎回以下のクエリを発行してやる。

$sql = "SET NAMES utf8";
$result = $db->query($sql);
(*Yomi-Search(PHP)modifiedには最初から記載されてます)

■MySQL側の文字コード設定を修正
MySQL の設定ファイル my.cnf を修正します。XAMPP の場合は \xampp\mysql\bin 以下にファイルがあります。(Windows の場合 my.cnf が短縮ダイヤルファイル(?)と認識され、 拡張子が強制省略されて表示されてます。ですので「my」ファイルがmy.cnfです。)
それを以下のように修正・追記します。

・[mysqld]の部分
#character-set-server = latin1
character-set-server = utf8
#collation-server = latin1_general_ci
collation-server = utf8_bin
init-connect=SET NAMES utf8

・[mysqldump]の部分
default-character-set = utf8

・[mysql]の部分
default-character-set = utf8
■作成済みデータベースの文字コードを修正 MySQL 側の文字コードをチェックした際、 character_set_database が latin1 などであった場合は、そこを utf8 に修正する。
ALTER DATABASE 'DB名' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
を実行すると、データベースの文字コードが変更される。

■その他
あとは、○○を再コンパイルしたりとか小難しい方法がぽつりぽつり。。難しいのでパス。

関連する記事:2件

AD:

今日のひと言

呑みいきたい!

磨者のはてなブックマーク はてなブックマーク

PHOTO COLLECTION

【WordPress】Ktai Entryをさくらで使う【メール投稿プラグイン】 : Go-PEARを使ったPEARのインストール : PEAR2.gif EmEditor で ダイレクトタグジャンプ : emeditor.gif WindowsXP へ XAMPP をインストール : xammp.jpg 携帯サイトで文字化け : 070707.gif 動的ページを静的URLで表示させる(PATH_INFO使用) : 400-300.gif PHP4でSmarty、tplファイルしか表示されないのは参照渡しが原因でした : php4%2Bsmarty.gif Dreamwerver で Smarty : Macromedia-Dreamweaver.gif MySQLの自動バックアップ phpMyBackupPro : logo.png さくらのレンタルサーバ へ PHP5.2.2 をインストールした : php.gif ダイナミックディスク⇔ベーシックディスクにはまる・・。 : 294574802_636f6f5e8c.jpg
RSS 2.0(XML)

Add to Google
My Yahoo!に追加
ADD TO Hatena::RSS
Subscribe with livedoor Reader

(→RSS/FEEDとは?

DJ SHU a.k.a NK-SUNSHINE BLOG 最新記事

CLUB BASE st.215 最新NEWS