忍者ブログ
手記もいろんな都合でついに流行のブログ化。
[49] [48] [47] [46] [45] [44] [43] [42] [41] [40] [39]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

昨日はあれからmozcを入れるのに大苦戦し
入れ終わった時点で24時間近く起きていた私は満足してバッテリーが切れてしまったのであった。
それでいいのか。

ちなみにMozcは何度もパッケージをつくろうとして
パッケージを作る段階(debuild)の段階でエラーが発生して挫折。
どうもファイルが壊れてしまっているらしいのだが同様のエラーは解決できないような記述を見つけて諦めたのでした。

結局、パッケージを作っているひとのパッケージをインストールして終わらせましたとさ。

+ + + + + + + + + +
 事前に用意したDBの中身を表示するところまではいったのだが
いざ表示してみると日本語が「?」で表示されるという孔明の罠。

原因を考えてみる。

1.文字コード問題

真っ先に思いつくのは文字コード齟齬。
というのも、これまでの環境はこんな感じなのである。

ソース:EUC-JPをヘッダで指定(PHPの仕様上の問題)
MySQL:UTF-8

PHPを設定する際はEUC-JPじゃないとダメだよというのを別のサイトで見て
文字化け発生時にファイルの文字コードをEUC-JPに設定していたのである。
MySQLのほうはphpMyAdminで確認してもしっかりutf-8になっている。

とりあえずコード関連の話を聞きつつ、別にソース記述と表示自体はUTF-8でも問題ないということを知ったので諸々のファイルをUTF-8に書き換えつつ、再度表示してみてもやはり?のままである。
なぜだ。

というわけで
得るものはあったけどブラウザ側の文字コードではなかったらしい。

2.文字列取得時の問題

次に思いついたのがDB取得と表示に使っている関数。
fetch_object(オブジェクト指向)使ってるのがダメなのか? と思ってfetch_assoc(連想配列)に書き換えてみる。

結果:変化なし

見当違いでした、と。

3.MySQL君自身の問題
どういうこっちゃと思って文字化けについて調べているうちに興味深いものを発見。
PHP、MySQLともにUTF-8なのにDBのデータ受け渡しは失敗する、そんな事例があるという。
phpMyAdmin、DBともに正常なのに表示しようとすると文字化けする、まさに同じ症例。

で。
これっていうのはどうもブラウザとDB間のデータ引渡しの際に勝手に文字コードの変換を行っている(らしい)ことに起因する問題らしい。
これはPHPから接続した際に「これからの処理は全部UTF-8で行いますよ」というクエリを送信することにより解決する問題らしいのだが、localでのテストの為だけにそんなコード仕込むのは冗長だしなんか嫌。
それなら設定変えればいいわけだ。

問題の設定変更。
/etc/mysql/my.cnf に下記の記述を追加するだけでおっけー。


[mysqld]
default-character-set=utf8
skip-character-set-client-handshake ←新しく記述


実はこの設定、MySQLの初期設定で行っておくべきと推奨されているのだが
設定した際に何故かこいつがエラーを吐き、しかも消しても問題なかったようなのでそのままにしていたのである。
で、こいつは「余計なことをするな」とMySQLに命令する(文字コードを勝手に変換しないようにする)命令文。

こいつを再設定し、最起動して表示を行うと無事表示されました。
ふう、よかった。

これって
MySQL(UTF-8)>PHP(仕様上の問題でEUC-JPで読み出し)>Browser(UTF-8で表示)
こんな手順を踏んでるから発生した問題なのかなー。
んで、上に示した命令は(何も命令していなければ)PHPがEUC-JPで読もうとして読めなくて、「?」に変換して出力処理するから起きる問題なのかなー、とか。
文字化けで全部の文字が「?」に化ける、っていうのは見たことがある。

まあ、初期設定時点でちゃんと設定しておけばけ躓かなかった問題なのだが
授業料ということにしておこう。
PR
この記事にコメントする
お名前
タイトル
文字色
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新CM
[12/15 ありません]
[12/15 わかりません]
[12/15 age]
[12/15 age]
[12/15 俺だ]
[12/01 素人です]
[10/23 nemoto]
[10/14 猫]
[10/11 Megami]
[11/02 憐崎捺輝]
最新TB
プロフィール
HN:
憐崎捺輝
年齢:
36
性別:
非公開
誕生日:
1988/04/24
趣味:
主にゲームとか。
自己紹介:
職業学生。根っからのゲーマー。
そしてこれでも受験生。
勉強しないといけないのにしたくないジレンマ。
というか勉強できません、誰か助けて。
バーコード
ブログ内検索
カウンター
アクセス解析
Powered by ニンジャブログ  Designed by 穂高
Copyright © 憐崎電子文庫館・手記 All Rights Reserved
忍者ブログ / [PR]