utf-8が使えないサーバー?
最近行ったリニューアル案件で、躓いた事例があったのでご紹介します。
phpファイルが文字化けする
サイトを一通り構築し自社のテストサーバーでチェックの上、本サーバーのテストフォルダにアップしてみると、システム部分が文字化けを起こしました。
文字コードは全てutf-8で書いてますが、htmlファイルは問題なく、どうもphpファイルに限り文字化けしてしまうようでした。
ちなみに、自社のテスト環境では問題ありませんでした。
サーバーが原因でしょうか?
サーバーのphpがeuc-jpに固定されていた
どうもこのサーバーではeuc-jpでしかphpが正常に動かないようでした。
今時そんなサーバーがあるんですね。
サーバーのコンパネとかで変更できるものなのかな?と思い、クライアントにコンパネ情報を聞いてみましたが、わからなかったのかサーバー会社に問い合わせたようでその回答がこちら。
「弊社のホスティングサービスではコントロールパネルといった機能はございません。
その他サーバについて必要な情報等がございましたらご連絡いただきますようお願い申し上げます。」
なんやて…
一応聞いてみた
文字コードについて直接サーバー会社に聞いてみたところ、やはり「うちはEUCです」という強気の回答。
utf-8を使いたいんですけどねーと言ってみると、「ゆーてぃーえふ…ですか…?」とよくわからない様子。
あ、もういいです。
サーバーが変わらないのならphpファイルの文字コードを全部変更していけばいいんでしょうが、この時点ではまだWordpressを導入するかもという話も出ていた為、さすがに非現実的。
.htaccessで対応
調べてみると同じような現象で悩んでいる人が居るようでした。
解決方法としてはPHPの文字コードを指定する記述を.htaccessに書けるようで、下記の記述を.htaccessに足す事によってphpファイルをutf-8で動作させることに成功しました。
|
1 2 3 4 5 |
php_flag mbstring.encoding_translation off php_value mbstring.http_output "UTF-8" php_value default_charset "UTF-8" php_value mbstring.language "neutral" php_value mbstring.internal_encoding "UTF-8" |
php.iniに書く方法もあるようですが、php.iniを自由に設置できるサーバーでは無かった為に、そちらは試していません。
まとめ
一つ、ここから得られる教訓があります。
「文字化けは.htaccessで対応!」ではありません。
そう、「ちゃんとしたサーバーを借りよう!」という事ですよね。
ちなみにこのサーバーは他にもGD(PHPで画像を処理するためのライブラリ)がjpgに対応していないという事象があり、システムでjpgをアップしてphpでリサイズファイルを作ろうとするとエラーが出ました。
とほほ…
以前も別のサイトで、プロバイダの無料スペースで数年運営した後、ニューアルの際にWordpressを入れるためにサーバー移管を行ったものの、前のサーバーでは.htaccessはおろかphpすら動かず301リダイレクトが出来なかったという悲しい事例もあります。
はじめは一見問題無くても、変なサーバーを借りると後々困ることがあるので皆さんご注意を。
わからない場合は制作会社に聞いてください。ほんとに。
関連リンク
digrartのホームページ制作
https://www.digrart.jp/web/web-design/
ホームページ制作に関するお問い合わせ
https://www.digrart.jp/contact/
この記事を書いた人
digrart編集部
大阪市中央区のweb制作会社のメンバーが、Webサイト制作、ECサイト構築、SEO対策、Webコンサルティングの最新情報や実践的なハウツーをお届けします。初心者からプロまで役立つノウハウや業界トレンドを分かりやすく解説。web戦略の成功をサポートするための情報が満載です!
関連記事
-
Chromeの検証ツール。スマホエミュレーターのバグ?
Chromeのスマホエミュレーターのバグ?によって少し困った事例があったのでご紹介します。 具体的には、768pxを境にレイアウトを切り替えるレスポンシブサイ...
-
Google評価品質ガイドラインE-E-A-Tを理解する
E-E-A-TとはGoogleがwebサイトを評価する際に用いる評価基準で、評価品質ガイドライン内に言及されています。 英語版しかないのでリンクしたところで普...
-
横並びだけじゃない!flexboxの小技
古くはtable、css2以降はfloatやinline-block等で実現してきた横並びレイアウトは、flexboxの登場により大きく変わりました。 今では...