ラベル 文字化け の投稿を表示しています。 すべての投稿を表示
ラベル 文字化け の投稿を表示しています。 すべての投稿を表示

2013年4月12日金曜日

コマンドラインでphpを実行すると文字化けする時の対処方法

ini_set("mbstring.internal_encoding", "utf8");

これで直りました。utf8のところは適宜文字コードに合わせてsjisとかにします。

Apache経由とコマンドラインでは文字コード設定が異なることがあり、それが原因でブラウザでのアクセスは問題ないのに、コマンドラインから実行すると文字化けする、ということが起こるようです。

レンタルサーバーなどによってはそういう設定になってることもあるので、cron等でコマンドラインからphpを動かす時は注意したほうが良いようです。

2011年2月15日火曜日

MySQL5.5で文字化け(character-set-serverで解消)

クライアントマシンのmysql(xamppでインストールしたやつ)が、最近非常に調子が悪く、まともにinsertやupdateもできないような状態になってしまったので、xamppを入れ直すことにしました。

xamppの設定をするのは何年ぶりでしょうか。2年以上は間が空いてると思います。

とりあえずapacheやphpは大きな問題もなく移行が完了。
mysqlも普通に動いてる、、、と思いきや、phpからinsertをしたデータが文字化け起こしてました。

というわけで、my.cnfにお約束の文字化け回避設定をします。

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake


が、mysqlが起動しなくなってしまいました。なぜ。。。

ググってみたところ、バージョン5.5以降では[mysqld]セクションのdefault-character-setが廃止され、代わりにcharacter-set-serverが追加されたそうです。

[mysqld]
character-set-server = utf8
skip-character-set-client-handshake


これで無事文字化け解消できました。ひとまず安心。

mysql5.5ではこの他にもいろいろ変更や新機能があるっぽいです。
今はまだローカルのテスト環境ですが、サーバー環境で使うとなると色々問題出てきそうですね。

2006年3月9日木曜日

mysqlとphpの連携で文字化け。skip-character-set-client-handshakeで解消

だいぶ使い慣れてきたMySQL5.0。

が、しかし!油断していたら文字化けが発生!

新しいサーバーにmysqlとphp、apacheを設置し、いつものようにアプリ開発しようと思ったが、mysqlからselectしてphpでデータ出力する際、日本語が「????」という感じで、はてなマークの羅列になってしまう。

こんな現象初めてだ。。。
しばらく悩んだけど、google先生が解決してくれた。「skip-character-set-client-handshake」というおまじないで文字化け問題解消。my.cnfの[mysqld]の項に以下のような感じで一行追加。

[mysqld]
skip-character-set-client-handshake


mysqldをリスタートしたら日本語が表示できるようになりました。よかったよかった。

ちなみに「skip-character-set-client-handshake」は、『サーバーの文字コード設定をクライアントでもそのまま使う』という意味だとか。

http://puchiko.lowtech.ne.jp/?itemid=349&catid=27