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

PHPのプログラムで

<?php
header('Content-type: text/plain; charset=utf-8');
echo "サンプル";
echo "sample";
?>

と書いてsample.phpで保存し、ブラウザから「http://documentroot/sample.php」でアクセスすると

マルチバイトの文字が「???????」と表示されてしまいます。
このときファイルの文字コードもutf-8にしています。
マルチバイト文字でなければ、「sample」などは正しく表示されます。

なぜ「?????」になっていまうのでしょうか。
Apacheやサーバーなどの設定で正しく表示させる設定方法がありましたら教えてください。

●質問者: anesawa
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Apache echo PHP UTF-8 アクセス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● km1981
●200ポイント ベストアンサー

mbstring.http_outputとmbstring.internal_encoding の設定が

UTF-8以外になっているのだと思います

php.iniを修正してください

◎質問者からの返答

internal_encodingに合わせたらうまく行きました。

ありがとうございます。


2 ● tezcello
●0ポイント

> マルチバイトの文字が「???????」と表示されてしまいます。

その時、ブラウザの文字エンコーディング(ブラウザの「表示」メニュから辿っていく)をいろいろ変えてみるとチャンと表示できる場合があります。

その時のエンコードは何でしょうか?

(Firefox なら、右クリックで「ページ情報」を選ぶとMIMEタイプや文字エンコーディングが表示されるので、この値でもOK。)

多分、UTF-8 になっていないんじゃないでしょうか?

以下のような事が考えられます。

PHPスクリプトの保存が UTF-8 になっていない。

BOM付になっているのかも。UTF-8(BOM無), UTF-8N 等 BOM が無いものを指定してください。

header() 実行時以前に、既に何か出力してしまっている。

<?php の前に改行やブランクがあったり...

Apache の設定や、php.ini が影響する事もありますが...何か変更しているのならデフォルトに戻してみるのも手でしょう。

「utf-8」じゃなく「UTF-8」の方がいいかも...多分どっちでも良いとは思いますけど...


> mbstring.http_outputとmbstring.internal_encoding の設定が

> UTF-8以外になっているのだと思います

それらの設定だけではエンコードが変わる事は無いのでは? > km1981 さん

ob_start() をスクリプト内で呼んでおかないと無効でしょ?

関連質問


●質問をもっと探す●



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