メンバーメニュー

ようこそ、ゲストさん

質問

  • PHP.iniで文字コード指定できない

    フリー

  • 本文:

    初期値でUTF-8が設定されています。SHIFT-JISに変更し一番下の確認ボタンを押したときは、修正されていますが、PHP.ini確認画面に戻るとUTF-8になっていて、修正できません。
    他に設定する場所があるのでしょうか?

  • 緊急度:急ぎ投稿者:たかみんさん投稿時間:2018/02/10 22:14
質問に対する回答は締め切られました

回答 No.6939

  • この回答がベストアンサーです

  • 本文:

    > このサーバーに移植した掲示板表示が、

    掲示板ですか。古い作りの掲示板ソフトは、文字コードをプログラム内部で決め打ちしていることが多いですから、そちらを疑ったほうがいいのでは?

    # 外国産のソフトが SHIFT_JIS決め打ちのソフトをつくるのはマイ〇ロソフト以外には考えにくいし、国産の古いソフトは、文字コードの自動判定などで、いろいろややこしい処理をしてヘッダにSHIFT_JIS指定したくらいでは、まともに動かないことが多い。
    # そもそも、PHPで書かれているのかどうかすら不明です。...有名どころだと、phpbb (とその系列) くらいしか思いつかない(けど、これは外国産なので、基本UTF-8でしょう)。

    それと、mbstring.internal_encoding は、あくまで、PHPの内部処理コードを指定するものであって、入出力の文字コードを指定するものではありません。そちらは、どちらかというと、mbstring.http_input/mbstring.http_output ですが、今では、非推奨の機能です。
    (入出力に何を使うにせよ、internal_encodingは UTF-8 がお勧めです)

  • 投稿者:ジョバンニさん 投稿時間:2018/02/11 05:08
質問者からのコメント

ジョバンニさん  ありがとうございます。
掲示板ソフトのベースは perlで書かれていたものを、前のサーバーの都合でPHPで動くように手をいれています。なので、相手に送られるコードとしては<META ... SHIFT-JIS>で行けるのではないかと思っていましたが、もっと深い事情があるようですね。

ならば、全部UTF-8でと思って試しては見たのですが、掲示板の表示は文字化けしませんが logに既に書き込まれている記事がSHIFT-JISなので・・・とここまで書いて ふと気づきました。
サーバー側をUTF-8にそろえて、そのコードの中でlog からみだしたコードをSHIFT-JISからUTF-8に変換する処理を入れたら 文字化けしない? のではないでしょうか?
試してみます。

色々ありがとうございました。

回答 No.6937

  • 本文:

    設定する(確認) を押した後に、もう一度 設定する(確定) を押さないといけないのを忘れているか、

    SHIFT-JIS ではなくて、SJIS や SHIFT_JIS としなくてはいけないか、

    どちらかでは???

  • 投稿者:ジョバンニさん 投稿時間:2018/02/10 22:37
質問者からのコメント

ありがとうございます。 確かに2度押ししていませんでした。

しかし、このサーバーに移植した掲示板表示が、この設定をShift_JISに変更しても、また、ソースに<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
と入れているにも関わらず、ブラウザ側がUTF-8になってしまいます。これは、IE11でもChromでも同じです。 サーバ側のどこかから指示する以外考えられないのですが、どこなのかわかりせん。

回答 No.6938

  • 本文:

    ジョバンニさん
    質問者のたかみんです。
    先のコメントで
    <META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
    と書きましたがShift-JISです。
    どちらにしても、変わりませんでしたが・・・

  • 投稿者:たかみんさん 投稿時間:2018/02/11 01:00
質問者からのコメント

最初の質問者の たかみんです。

PHP関連で備忘録としてコメントに残します。
エンコードもそうでしたが、掲示板なのでBOXに文字を入力して、入力者、日時、コメント・・・をログに入れますが、PHPのバージョンによって、この文字の取り込みが大分異なるようです。 結果として、新しいバージョンのPHPでは文字列として取り込めませんでしたが、当サーバーの一番古いPHPのバージョン(5.16)で95%くらい対応できました。 残りは コードでや掲示板の一部の機能を変更することになりました。
古い掲示板の移植で難儀するとは思いませんでした。PHPの古いバージョンもいつまでサポートいただけるか分かりませんので、新しいバージョン対応の準備も必要かと思いました。