Shift_JISでサイトが文字化けした時の解決法

ホームページを作っていて時にサイトが文字化けする事があります。

決まってサイトの文字コードがUTF-8以外の時に起こります。それは文字コードがShift_JISになっている時です。

調べた所、サーバーのPHP設定で文字コードが指定されている事が原因だとわかりました。

サーバーはロリポップを利用しておりますが、PHPの設定画面があり「default charset」がUTF-8になっております。これは、プルダウンメニューになっており、一見変更できそうですが、UTF-8以外の選択肢を選んで保存しても、また戻ってみてみると、UTF-8に戻っています。

インターネットで調べてみると、.htaccessでPHPの設定画面が変えられることがわかりました。
そのためには管理画面のPHPの設定で「php_value,php_flagを利用可能にする」をONにします。

そして.htaccessファイルに下記の記述を書きます。

PHP_value default_charset none
PHP_value output_handler none
php_value mbstring.encoding_translation "Off"

これは、色々調べた結果、二つのサイトに書かれていたものを組み合わせました。

最初の2行は以下サイト様で参考にさせていただいたものです。

参照「PHP5.6以上(PHP7含む)でShift_JIS、EUCのPHPファイルが文字化けする|PHP工房」
URL:https://www.php-factory.net/cms/detail.php?id=26

そして3行目は下記のサイト様を参考にさせていただきました。

「php.iniを直接編集できないレンタルサーバーで、php.iniの設定を.htaccessで変更する方法 | さくらnetbiz」
URL:https://sakuranetbiz.com/php-ini%E3%82%92%E7%9B%B4%E6%8E%A5%E7%B7%A8%E9%9B%86%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7%E3%80%81php-ini%E3%81%AE/

最初の2行で最初やってみたのですが、効果が確かにあり、Shift_JISのホームページが文字化けしなくなりました。

しかし、これでいける、と思ったのですが、文字化けが直らないホームページが一件出現しました。

そのホームページも文字コードがShift_JISです。

それで、さらに調べて、3行目のコードを見つけた次第です。
ただ、文字化けしたホームページがどれだったか忘れてしまって、試せないでいます。

解決策からは脱線しますが、ホームページの世界では、UTF-8が標準になっているのだなとつくづく思います。それ以外の文字コードは消えて行く運命なのでしょうか。

確かに様々な文字コードがあるのは、サーバー会社もブラウザを作る会社も作業が大変になると思います。それから世界中を相手にサイトを公開している場合には文字コードによる問題になったりするかもしれず、一つの文字コードを世界標準にしたい気持ちはわかります。

これも世の流れなのでしょうか。

文字コードがUTF-8一つに統一されれば、様々な端末、パソコンやスマートフォンやガラケーなど様々な端末間での文字化けの問題を解決できます。さらに言えば、同じWindowsのパソコンでも、ブラウザの違いやメールを送受信するメールソフト(メーラー)の違いによる文字化けも解消するかもしれません。

メジャーなブラウザやメールソフトでしたら、文字コードの問題は起こさないように作られていると思いますが、あまりメジャーではないものを使いたい場合などは、様々な文字コードがあることで文字化けのリスクが高まるのは事実だと思います。

文字化け解決法について書いていたのですが、文字コード自体のことについて考えてしまいました。

コメント