ウェブサーバ上にUTF-8で書かれたテキストファイルを置いているのですが、iOS・iPadOSのブラウザSafariで読み込むと文字化けしてしまい、困っていました。
同じファイルをパソコンのブラウザで開いた場合は文字化けしないのですが、仮に文字化けしたとしても、手動で文字コードをUTF-8に変更すれば正しく表示されます。
しかしiOS・iPadOS版のSafariには、文字コードを手動で指定する機能がないようです。
それならばと、App StoreからEdgeやFirefoxをダウンロードして試してみたのですが、こちらも同様に文字コードを手動で変更する機能はありませんでした。
おかしいなぁ、パソコン版だと文字コードを変更する機能があったりするんだけどなぁ…

あれこれ考えても解決策が思いつかず、正直なところ少し面倒になって、しばらく放置していました。
しかし、あるときふとHTTPヘッダを確認したところ、Content-Type: text/plain; charset=Shift_JISという表示が。
原因はお前かっ!!
XAMPPや最近のサーバ環境では、デフォルトの文字コードはUTF-8になっています。
しかし、私が利用しているレンタルサーバは、サービス開始から25年前ほど経過しており、当時の日本語環境ではShift JISが事実上の標準だったため、その名残で今でもサーバのデフォルト文字コードがShift JISのままになっていたのでした。
そのためSafariは、UTF-8で書かれたファイルをShift JISとして解釈してしまい、その結果、文字化けが発生していたというわけです。
解決策として、.htaccessにAddDefaultCharset UTF-8を追記し、サーバ全体のデフォルト文字コードをUTF-8に統一する方法をとりました。
AddType "text/html; charset=UTF-8" .txtと指定して、テキストファイルだけをUTF-8扱いにする方法も検討しました。
しかし、サーバ内のHTMLファイルは何年も前にすべてUTF-8へ移行済みなので、ここで小手先の対応をするよりも、サーバのデフォルト設定を現代的なものに揃えてしまった方が、後々のトラブルも減るだろうと判断しました。
原因自体は案外単純だったのですが、そこに気づくまでに何日もかかってしまいました。
とはいえ、一度原因が分かってしまえば対処はあっけないものです。
古くから運用されているサーバでは、こうした「昔の常識」がそのまま残っていることも少なくありません。
同じようにSafariで文字化けに悩んでいる人がいたら、サーバのデフォルト文字コードを疑ってみることをお勧めします。