Google検索のサマリーが文字化けしてしまう

Google検索で「enginner note」と検索すると、このサイトが出てくるのですが、なぜかサマリーの文章が文字化けしていました。サーバーまたはデータベースの文字コードの問題かと設定しなおしましたが、解消しません。よく調べた所、原因は「All In One SEO」のメタ説明が文字化けでした。バージョンアップした際か何かで文字化けしてしまったようです。修正した後、Google検索の表示に反映されるのは10日ほどかかりました。すぐには反映されないようです。

Engineer Note
アプリ開発・LinuxサームçÂÂ'°å¢ƒæ§‹ç¯‰ã ...

検索結果では、このように文字化けしていたのですが、大抵の場合、文字コードがShift-Jisで設定されていて、ブラウザがUTF8で読み込もうとして文字がおかしくなっていることが多いのですが、今回は違いました。ちなみにサーバとDBの設定変更は以下のようにしました。

1.サーバー(PHP)の文字コード修正

php.iniの設定を修正します。viを起動して、設定ファイルを編集します。

vi /etc/php.ini

以下の設定を書き換えます。

・「;mbstring.language……」の「;」を削除します。

mbstring.language = Japanese

・文字コードの設定をUTF8に設定します。

mbstring.internal_encoding = UTF-8

・通信インプット・アウトプットの設定を「pass」に指定します。(これは必要ないかもだが一応設定)

mbstring.http_input = pass
mbstring.http_output = pass

・文字エンコーディング変換を「Off」に設定します。行頭の「;」を削除する。

mbstring.encoding_translation = Off

・文字コードの優先順位を明示します。行頭の「;」を削除し、文字コードを追記します。

mbstring.detect_order = UTF-8,EUC-JP,SJIS,JIS,ASCII

・変換失敗や無効文字の代わりに表示する文字を「none」に指定します。行頭の「;」を削除し、「none」を追記します。

mbstring.substitute_character = none;

「:wq」とviに入力し、設定を保存し、終了します。これで設定は完了で、設定を反映するために、Apacheを再起動します。

systemctl restart httpd

2.DB(MySQL)の文字コード修正

PhpMyAdminにログインし、「ホーム画面 > 一般設定 > サーバ接続の照合順序」から文字コードを変更します。(※PhpMyAdminの設定は前回の記事を見てください)

文字コードはWordPressを使用しているサイトは以下のように設定します。utf8mb4にすることで絵文字が使えるようになります。

MySQL 5.6 以上utf8mb4_unicode_520_ci
MySQL 5.5.3以上utf8mb4_unicode_ci
それ以外utf8_general_ci

補足1:バージョンはPhpMyAdminのホーム画面(データベースサーバ)で確認できます。

  • サーバ: Localhost via UNIX socket
  • サーバの種類: MySQL
  • サーバのバージョン: 5.6.47 – MySQL Community Server (GPL)
  • プロトコル バージョン: 10
  • ユーザ: root@localhost
  • サーバの文字セット: UTF-8 Unicode (utf8)

補足2:ホーム画面の「サーバ接続の照合順序」から文字コードを変更できない場合はデータベースそれぞれで文字コードが違う可能性があるので、データベースごとの文字コードを修正すると、変更できます。

中堅サーバエンジニア

中堅サーバエンジニア現在Unity勉強中

都内で10数年、Web系のアプリケーション開発をしています。 プログラミング、ゲーム、株とかのブログを書いています。

関連記事

コメント

この記事へのコメントはありません。