人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpで書いたプログラムを保存するときの文字コードは、何に合わせたらいいのですか?

●質問者: sun-chan
●カテゴリ:ウェブ制作
✍キーワード:PHP プログラム 文字コード
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● onigirin
●20ポイント

ご自信のWEBサイトの文字コードにあわせるといいと思います。

うちの場合は、Shift-JISで今までhtmlを作っていたので、

phpもShift-JISです。

だいたい統一しておけば、問題ないと思います。

◎質問者からの返答

ありがとうございます。

php, webpage, MySQL内のデータと、あって、最善なのは全ての文字コードをそろえることなんでしょうか。


今MySQL内のデータの文字コードを調べているところなので、それが終わったら再検討してみます。

ありがとうございます、


2 ● praide
●20ポイント

サーバーの設定も関係しますし、

文字コードを合わせていないと、文字化けを起こさないですか?

統一するのは大切だと思います。

基本的にはEUCでとうたわれていますが、

自分もサイトをShift-JISで組むことが多いのでそれにあわせています。

◎質問者からの返答

今のところ文字コードのことは考えていなかったんですが、ウェブ上では文字化けは起きていません。

phpMyAdminでMySQLを見ると文字化けしていますけど、ウェブ上に表示したら問題なく見えています。

UTF-8をお勧めされているんですが、あんまり標準的ではないんですかね・・・

うーん。

回答ありがとうございました。


3 ● tezcello
●25ポイント ベストアンサー

phpはShift-JIS での記述は推奨されない様です。

文字化け云々よりも、正規表現系の関数が正常に機能しない可能性が高い(問題なく動作する事もあるが)のは、かなりもったいないのではないでしょうか?


サーバのエンコードに合わせるのが良いと言う記述はよく見かけます。

僕は、xmlを扱う事増えて来たので、スクリプトの先頭で、内部コード・正規表現のコードをUTF-8に、HTTP入出力をpassに、入力クエリのエンコードの自動変換をoffに、を指示してUTF-8で使ってます。もちろんスクリプトの保存はUTF-8です。

(うちのサーバは EUC-JPなので、これらを決まり文句として書いてます。)


携帯用のサイトは出力前に自分でShift-JISにエンコード変換をすればいいでしょうね。EUCやUTFでも問題ないようになって来ているみたいですが。

今時Shift-JISしか理解出来ない(PCの)ブラウザはまず無いので、チャンとヘッダや(x)html内で宣言してあれば文字化け問題は起きないでしょう。

◎質問者からの返答

ご回答ありがとうございます。

webについては

>> 今時Shift-JISしか理解出来ない(PCの)ブラウザはまず無いので

ということで理解しました。


phpの保存は、

>> phpはShift-JIS での記述は推奨されない様です。

は初めて知りました。ありがとうございます。

>> サーバのエンコードに合わせるのが良いと言う記述はよく見かけます。


というのは、webページの ヘッダーで宣言してある文字コードということでしょうか?

もしくは、別にサーバ全体で何か設定してある文字コードというのがあるのでしょうか?


4 ● tezcello
●25ポイント

回答受付中でもコメントがつけられるように変更していただけるとありがたいです。(質問者は質問のページ?で設定を変えることができるそうです)


サーバが動いているOSで使用している文字コードの事です。

linuxでしたら、環境変数 LANG に格納されているようです。

php からなら、$_ENV['LANG'] という変数に格納されていると思います。

phpinfo() を実行してみると色々な情報が表示されるので、実行環境を確認するにはいいと思います。(設定されていれば、その表示の中の「Environment」に LANG の値も表示されます。)


ここでいうヘッダは、html 書類の中の head タグの事ではないです。

httpサーバがデータを送り出す際に送ってくるhttpヘッダの事で、php からも header() 関数で制御できます。

もちろんHTML文書として正しくある為に、xml 宣言、html タグ、head タグ内での言語やエンコードの明示は必要でしょうし、これとhttpヘッダも合っているべきですね。(世の中には合っていないサイトも結構あるようです)


また、稀にOSと各サーバ(ソフトウェア)の内部コードが違う場合も有るようです。

OSはEUC, PHPはUTF... とか

ディストリビュータが用意しているものを使えばその様な変な事にはなら無いとは思いますが。

◎質問者からの返答

ありがとうございます。

HTTP_ACCEPT_CHARSET Shift_JIS,utf-8;q=0.7,*;q=0.7

HTTP_ACCEPT_LANGUAGE ja,en-us;q=0.7,en;q=0.3

というのはありました。

ちなみに MySQL は euc に設定してあるようでした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ