Movable Typeのエラー「不正な要求です。文字コードUTF-8に含まれない文字データを送信しています。」の原因と解決方法
先日、私のブログのMovable Typeのタグクラウドで、日本語文字列のタグをクリックすると、以下のエラーが発生していることに気付いた。
Movable Type
エラーが発生しました。
不正な要求です。文字コードUTF-8に含まれない文字データを送信しています。
このエラーには心当たりがあった。
2015年1月21日のXREAのメンテナンス後に、私のブログのMovable Typeのデータベースの文字コードをEUC-JPからUTF-8に変更したので、その関係だろう。
HTMLソースを見てみると、データベースの文字コードをUTF-8に変更した後も、以下のように、HTMLファイルで指定されているメタタグの文字コードがEUC-JPのままになっていた。
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
タグクラウドの検索ページに遷移する際に、リンク元のページのHTMLファイルの文字コードがEUC-JPで、タグクラウドの検索ページの文字コードがUTF-8だと、文字コードが異なるため、うまくいかないのであろうと思った。
Movable Typeの管理画面にログインし、「サイトを再構築」の機能で、全てのHTMLファイルを再作成したところ、再作成したHTMLファイルの文字コードが、EUC-JPからUTF-8に変わった。
《サイト再構築前》
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
《サイト再構築後》
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Movable Typeのデータベースの文字コードを変更した場合、Movable Typeでの設定変更については、mt-config.cgi内の「PublishCharset」で文字コードをeuc-jpからUTF-8に変更するだけでよいと思い込んでいたが、どうやら、Movable Typeの管理画面の「サイト再構築」機能でHTMLファイルを再構築する必要があったようだった。
《関連リンク》
XREAの2015年1月21日のメンテナンスでMySQLデータベースが「ほぼ」空っぽになったので復旧した