php ファイル内に記載した日本語が文字化けするという問題に直面しました。
結論としてはサーバー側じゃなくて php ファイルの文字コードが間違えていたことが原因でしたが、そこに行きつくまでにかなり時間がかかったので記録しておきます。
事象:PHP の日本語が文字化けします。
以下のようなすごくシンプルな php ファイルです。「あいうえお」って書いてあるだけ。
これを実際に読み込むと、記事には「??????」って感じで文字化けして表示されます。
文字化けしているのは間違いと思っていたんですが、原因がなかなかわかりませんでした。。
php.ini では回避せず
「XServer PHP 文字化け」とかで検索をすると、php.ini の内容が原因って指摘するページがいっぱいありました。
内容もすごく似ていて、それだ!って思って試したんですが、どれも回避できませんでした。
ちなみに試したことは覚えている限りだと:
- 以下を記載した php.ini をルートディレクトリに作成したけど回避せず
mbstring.internal_encoding = UTF-8
- 「ルートディレクトリ」がどこの事かが自信がなかったので、ひたすら上に上がったフォルダから一つずつ php.ini を移動したけど回避せず。
- XServer のサーバーパネルの php.ini の設定を変更したけど回避せず。
- 古い XServer だけっぽいが、.htaccess を編集するという情報があり、とりあえず試してみたけど回避せず。
結果:ファイルの保存形式が原因
サーバー側の設定じゃなくて .php ファイル自体の文字コードが UTF-8 じゃなくて ANSI になっていたことが原因でした。
php ファイルをローカルにダウンロードして、notepad で開いて、名前を付けて保存を押すと、以下の文字コードがANSI になっていました。
改めて UTF-8 で保存しなおしたファイルをアップロードしなおしたら、すぐに直りました。
XServer のサーバーパネルの php.ini の設定もデフォルトのままです。ここは何も変更は必要ありませんでした。
Windows で Notepad を使っているとデフォルトで選ばれる文字コードが ANSI なのでこの問題に陥っている人は結構多そうだけど、全然情報が見つけれなくてすごく時間がかかった。。