数日悩んでいた問題が解決した。あまりたいした問題でもないし、ここに書くのもお恥ずかしいくらい単純なことだったんだが、一応メモとして残す。
他のブラウザーでは見受けられないが、なぜかFirefoxで起こる現象。
コードは単純なもので、DBにデータをInsertして、成功か失敗かのメッセージを返すだけのもの。メッセージは日本語なのでUTF-8のエンコードを使用。
ただ、問題はDBのInsertを二回試みるということだっだ。IDがPRIMARY KEYになっているので、一瞬だけ文字化けした成功メッセージが表示され、その後すぐにエラーメッセージが表示される。データはちゃんと挿入されている。他のブラウザーでは問題ない。
ウェブサイトを観覧するときに、ブラウザーは自動でエンコーディングしてくれるものだ。IEはURLが同じの場合、リクエストは一回しか送信されない。
だがFirefoxでは一回目のリクエストでエンコードが設定と違うページを開こうとした場合、ページがリフレッシュされ、二回目に正しいエンコードで表示される。なので、上記のような問題が起こったと思われる。
メッセージを英語にすると問題ない。これは確実にエンコードの問題!!
とひらめき、PHP.iniで設定しているdefault_charsetを確認したところ、コメントアウトされていた。あれ~、環境設定ちゃんとしたはずなんだけどなー。と思いつつも、そこを直すと、すんなり問題が解決されました。
しかし、ウェブは本当にブラウザーによっていろんな問題出てくるよなー。
統一して欲しいけど、それってやっぱ独占禁止法に触れるのかな?
他のブラウザーでは見受けられないが、なぜかFirefoxで起こる現象。
コードは単純なもので、DBにデータをInsertして、成功か失敗かのメッセージを返すだけのもの。メッセージは日本語なのでUTF-8のエンコードを使用。
ただ、問題はDBのInsertを二回試みるということだっだ。IDがPRIMARY KEYになっているので、一瞬だけ文字化けした成功メッセージが表示され、その後すぐにエラーメッセージが表示される。データはちゃんと挿入されている。他のブラウザーでは問題ない。
ウェブサイトを観覧するときに、ブラウザーは自動でエンコーディングしてくれるものだ。IEはURLが同じの場合、リクエストは一回しか送信されない。
だがFirefoxでは一回目のリクエストでエンコードが設定と違うページを開こうとした場合、ページがリフレッシュされ、二回目に正しいエンコードで表示される。なので、上記のような問題が起こったと思われる。
メッセージを英語にすると問題ない。これは確実にエンコードの問題!!
とひらめき、PHP.iniで設定しているdefault_charsetを確認したところ、コメントアウトされていた。あれ~、環境設定ちゃんとしたはずなんだけどなー。と思いつつも、そこを直すと、すんなり問題が解決されました。
しかし、ウェブは本当にブラウザーによっていろんな問題出てくるよなー。
統一して欲しいけど、それってやっぱ独占禁止法に触れるのかな?
Comments