PHPの最近のブログ記事

2回目のMT設置が完了。
現在の最新バージョンはMT4.22。

なぜ2回目かというと、前回は2週間前に設置したが、設定ファイルを特に気にしてなかったので、mysqlに格納するときに、文字コードがおかしくなっていた。

これはmysql4になってから、クエリ発行時のデフォルトキャラクタセットが強制的にUTF-8になったことに起因する昔からの不具合らしく、MTだけを使っているのなら格納時に文字化けしても、取り出し時にエンコードされるので表面上は正常に見えるが、phpmyadminでDBを見てみると、見事に文字化けしている。
また、デフォルトでの文字セットと照合順序がlatin1_swedish_ci(スウェーデン?)になっちゃってる。

MTで使うmysqlサーバは、他の自分のスクリプトからも参照されるので、これはさすがに統一しなきゃならんってことで、いろいろ解決方法を検索して調べまくり今に至る。

結果的に/etc/my.confを以下のように変更し、文字化けは解消された。

[client]
default-character-set = utf8

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set = utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

skip-character-set-client-handshake


最後のskip-character-set-client-handshakeオプションが有効になる環境であれば、
他のdefault-character-set = utf8とかは記述しなくても問題ないとは思われるが、念のためのおまじないってことで・・・


phpmyadminから再び確認すると、ちゃんと2バイト文字も文字化けなし。
いーねいーね。

上の設定をしておけばmt-config.cgiの内容もほぼデフォルトでOKみたい。


ただ、今まで書きためたMTの記事(10件ほど)は、すでに文字化けした状態でmysqlに格納されていたため、残念ながらリセット。
また一から記事の書き直しだ・・・

このアーカイブについて

このページには、過去に書かれたブログ記事のうちPHPカテゴリに属しているものが含まれています。

前のカテゴリはPerlです。

次のカテゴリはPost Fixです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.22-ja