昨日はあれからmozcを入れるのに大苦戦し
入れ終わった時点で24時間近く起きていた私は満足してバッテリーが切れてしまったのであった。
それでいいのか。
ちなみにMozcは何度もパッケージをつくろうとして
パッケージを作る段階(debuild)の段階でエラーが発生して挫折。
どうもファイルが壊れてしまっているらしいのだが同様のエラーは解決できないような記述を見つけて諦めたのでした。
結局、パッケージを作っているひとのパッケージをインストールして終わらせましたとさ。
入れ終わった時点で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で読もうとして読めなくて、「?」に変換して出力処理するから起きる問題なのかなー、とか。
文字化けで全部の文字が「?」に化ける、っていうのは見たことがある。
まあ、初期設定時点でちゃんと設定しておけばけ躓かなかった問題なのだが
授業料ということにしておこう。
いざ表示してみると日本語が「?」で表示されるという孔明の罠。
原因を考えてみる。
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
この記事にコメントする
カレンダー
10 | 2024/11 | 12 |
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 |
カテゴリー
フリーエリア
最新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 憐崎捺輝]
最新記事
(10/19)
(09/13)
(06/24)
(06/14)
(06/07)
(05/24)
(05/20)
(05/19)
(05/18)
(05/17)
最新TB
プロフィール
HN:
憐崎捺輝
年齢:
36
HP:
性別:
非公開
誕生日:
1988/04/24
趣味:
主にゲームとか。
自己紹介:
職業学生。根っからのゲーマー。
そしてこれでも受験生。
勉強しないといけないのにしたくないジレンマ。
というか勉強できません、誰か助けて。
そしてこれでも受験生。
勉強しないといけないのにしたくないジレンマ。
というか勉強できません、誰か助けて。
ブログ内検索
最古記事
(02/03)
(02/03)
(02/04)
(02/04)
(02/05)
(02/08)
(02/13)
(02/13)
(02/18)
(02/28)
カウンター
アクセス解析