<?php
header('Content-type: text/plain; charset=utf-8');
echo "サンプル";
echo "sample";
?>
と書いてsample.phpで保存し、ブラウザから「http://documentroot/sample.php」でアクセスすると
マルチバイトの文字が「???????」と表示されてしまいます。
このときファイルの文字コードもutf-8にしています。
マルチバイト文字でなければ、「sample」などは正しく表示されます。
なぜ「?????」になっていまうのでしょうか。
Apacheやサーバーなどの設定で正しく表示させる設定方法がありましたら教えてください。
mbstring.http_outputとmbstring.internal_encoding の設定が
UTF-8以外になっているのだと思います
php.iniを修正してください
mbstring.http_outputとmbstring.internal_encoding の設定が
UTF-8以外になっているのだと思います
php.iniを修正してください
internal_encodingに合わせたらうまく行きました。
ありがとうございます。
> マルチバイトの文字が「???????」と表示されてしまいます。
その時、ブラウザの文字エンコーディング(ブラウザの「表示」メニュから辿っていく)をいろいろ変えてみるとチャンと表示できる場合があります。
その時のエンコードは何でしょうか?
(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() をスクリプト内で呼んでおかないと無効でしょ?
internal_encodingに合わせたらうまく行きました。
ありがとうございます。