.htaccessによる文字化け対策
TypeKey認証やコメント投稿の後で文字化けが発生するという質問を最近何件か頂いています。TypeKeyの文字化けについてはHTTPリダイレクトを伴っており、ページ直前のHTTPレスポンスで返却されたcharsetを見てしまうのが文字化けの要因と思われます(発生するサイトとしないサイトの違いは不明です)。下記のサイトに解説があります。
ただしコメント投稿後の文字化けは原因不明(リダイレクトではないという認識)です。
上記のサイトにも少し書かれていますが、リダイレクトによる文字化け解消について .htaccess を利用する方法がありましたのでご紹介します。
1..htaccess ファイル作成
まず .htaccess というファイルをテキストエディタ等で新たに作成し(既に存在する場合はその中)、そこに下記のいずれかの青字部分を記述します(とりあえず上の方をお試しください)。記述例は文字コードが UTF-8 でファイルの拡張子が .html の場合です。
明示的に文字セットを指定していない応答に追加されるデフォルトの文字セット
AddDefaultCharset UTF-8
ファイル名の拡張子を指定されたコンテントタイプにマップ
AddType "text/html; charset=UTF-8" .html
上の設定はHTTPヘッダで charset が設定されていない時に文字コードを指定するものです。
下の設定は拡張子に対応するコンテントタイプ(MIMEタイプ)の設定が目的です。phpファイルも対象に含む場合は
AddType "text/html; charset=UTF-8" .html .php
としてください(拡張子の間は半角空白、拡張子のピリオドはなくてもいいようです)。
記述した行の最後は改行してください。文字コードの部分は「EUC-JP」「Shift_JIS」等、使用されている文字コードに適宜修正ください。
技術的な話をすると、上記はいずれも Apache ディレクティブですのでHTTPサーバに Apache が使われていることが前提になります(多分この文章は無視されても大丈夫だと思います…)。
2.ファイル配置
.htaccess を配置(アップロード)します。このファイルの内容は、ファイルを配置したディレクトリおよびそのサブディレクトリ全てに適用されますので(サイトのトップディレクトリにあると思われる)index.htmlが配置されているディレクトリに配置します。
以上です。なお上記の対策は動作を確認できてないこともあり、完全な不具合解消を保証するものではありませんので予めご了承ください。また本設定がコメント投稿後のページ表示にも適用されればいいのですが(CGIからの出力は一旦HTTPアクセスが行われると思っているので適用されそう?)、そうでなければカスタマイズされたページのどこかに文字化けの要因が潜んでいると考えられます(感覚的にはHTMLタグの文法エラー等ですが改善性については未知です)ので、申し訳ございませんが「デフォルトのテンプレートから少しずつカスタマイズして動作をチェックしてみてください」という原始的なアドバイスしかできません。併せてご了承願います。
↑一応動作確認できているサイトあります。なお文字化けの原因は「続きを読む」を折りたたむスクリプトにあるようでした。ご利用中の方にはご迷惑おかけして大変申し訳ございません。とり急ぎお詫びまで。
- Movable Type 4 でテンプレート編集画面の内容が途中から消失する問題の対処
- Windows XP のローカルサーバ環境(ジャンクション利用)への Movable Type 4.1 のインストールで「mt-staticがみつかりません」という警告が表示される場合の対処
- Movable Type でサブドメインを利用する場合の設定
- Movable Type 4.1 でコメント投稿者情報が保存されない不具合について
- 「月別アーカイブリスト」が月別アーカイブで正常に表示されない不具合について
- Movable Type 4.0x でブログ記事へのリンクが post.html になる/ブログ記事のプレビューができない不具合について
- テンプレートの再構築で「モジュールというテンプレートが見つかりませんでした」というエラーになる場合の対処
- Movable Type 4 の管理画面で詳細メッセージのないエラーが発生する不具合について
- Movable Type 4 のデフォルトテンプレートで @import が表示される問題
- 検索結果のページ分割(3.3x 版)
- Movable Type でコメント投稿・トラックバックが重くなる事象を解消する
- HTTP/1.1 の「条件付きGET」を利用して PHP ファイルアクセスによるサーバ負荷を削減する
- MTEntries タグの lastn 属性と sort_order 属性(ascend)の同時指定が有効にならない件について
- Movable Type 3.x デフォルト・テンプレートのAtomフィードの不具合について
- Movable Type 3.3 で TypeKey サイン・イン時の JavaScript エラーを解消する
- カテゴリーリストで MTArchiveListHeader と MTArchiveListFooter が正常に動作しない問題
- Movable Type 3.2 と 3.31 におけるサブカテゴリーリストの表示の違いについて
- Movable Type 3.3 の再構築で「<MTTagName>タグが閉じられていません」になる問題の対処(改)
- Movable Type の検索でエラーになる問題について
- コメント・プレビューで実体参照が無効になる不具合を解消する
≫ TypeKey認証時の文字化け対策 from Internet Zone::Movable TypeでBlog生活
TypeKeyでサイン・インしたときや、逆にサイン・アウトしたときに、文字化けする場合がありました。全部じゃなくて、同じブログのなかでも、文字化けするエントリー... [続きを読む]
≫ Blogカスタマイズメモ from Daily note
文字化け現象に(・ε・?だったのが解決の模様。
今回ももちろんお世話になりました... [続きを読む]
≫ TypeKey認証時の文字化け対策 from Magic White
小粋空間 個別アーカイブに「続きを読む」を導入のスプリクト入れていて、TypeK... [続きを読む]
≫ 文字化け対策に.htaccessファイルを使う from 喜怒哀楽
うちのMT。 なぜかこのページだけエンコードがUTF-8にもかかわらず、日本語(... [続きを読む]
≫ 文字化け対策をしてみました from リンゴ庵blog
以前から、個別エントリーを表示させると「文字化け」が起こることは存じておりました... [続きを読む]
≫ 文字化け対策 from M*C?B Version?
小粋空間さんの
.htaccessによる文字化け対策をここでも取り入れてみました... [続きを読む]
≫ Movable TypeをUTF-8化したら文字化け発生 from THE SUN ALSO RISES
です。なんだかインポートの仕方が間違っているのかなと思っていましたが、解決策が小... [続きを読む]
丁度先日、ウチのサイトも化けて気になってました
今回のバージョンからの気もするんですが・・
本来、サーバー側で対応するべきっぽいですね
とりあえず、htaccess置いてみます^^
こちらの方法で、うちもトップディレクトリにhtaccessファイルを置いてみましたら、以前の現象はなくなりましたー!
すごいですー!
重ね重ねありがとうございました!
もう・・・度々スミマセン。
もっと動作確認してから書きこみしなきゃ!と思いつつ、うきうきしちゃうとつい・・・。
で、htaccessファイルを置いたまではよかったんですが、トップカテゴリをクリックして出てくるページ、またトップ以下のサブカテゴリーの各ページに
The MTPaginate tag only works within PHP documents!
Make sure that the document extension is .php and that your server supports PHP documents.
というエラーが出てしまいます。
また、ページ分割の部分もうまく動かなくなっちゃいました。
ということで、htaccessファイルは外しちゃいました。
何がなんだか、私には分かりません;
「手を出すな」ということでしょうかね;;;
でも、確かにhtaccessファイルをおくとですね、以前エンコードがうまく選ばれなかったページはブログの文字コードを選んでくれてました。
>Deepsnowさん
こんにちは。
参照ありがとうございます。
たしかにサーバー側で対応してくれればいいですね。
ただレンタルサーバーの場合はユーザの文字コードを予測できないのであえて設定していない?という見方もできそうです。
>ミッチさん
こんにちは。
参照ありがとうございます。
念のため状況を確認させてください。
どの方法を使われましたでしょうか?
また2番目の方法も行われてましたでしょうか?
よろしくお願い致します。
またお時間ください…。
こんばんは。
一番目の「AddDefaultCharset UTF-8」でやってみたところ
コメント後の文字化けがなくなりました。
(ワタシがレンタルしてるロリポはApache1.3××のようです。)
テンプレートをデフォルトにしてやり直すことも考えていたのですが
これで落ち着いてくれると信じて様子をみます。
とても助かりましたぁ。ありがとうございます。
>miaowさん
こんばんは。
いや?、うまくいったみたいで良かったです。
Apacheのバージョンも調べて下さりありがとうございます。
コメント&確認ありがとうございます。
僕は、プログラムはさっぱりダメな文科系ゆえ、いつも参考、じゃなくて活用させていただいております。ダジャレならお役に立てるんですけどね… (^^;)
>GAKUさん
こんばんはー。
いえいえ、ダジャレ仲間増えて嬉しいです。
またのお越しを!
yujiroさん、こんにちは。
私が試した方法ですが・・・
MTをPHP化にしたもので、迷わず
AddType "text/html; charset=UTF-8" .html .php
の方をやってみちゃったんです。
他のは試してません。
やってみた方が・・・・いいですよね。
ちょっと実験してきまーす・・・。
>ミッチさん
こんばんはー。
実験お願いしてすいません。
お待ちしております。
文字化け対策と個別対応続き読むスプリクトいれるとうちの場合、javascriptエラーでます。
MT3.11新規インストール環境だと違う部分あるのかなぁ、、、。
htaccessには、http://lolipop.jp/?mode=manual&state=blog&state2=mt311_2&PHPSESSID=ee698e7b497933e3eecdbe48e0cca2cd
ありますファイル保護やってたんですが、mt.cfgファイル保護しようとしてもエラーでます。
なんでだろ、、。
書き忘れました。
エラー表示は、
ライン45
文字5
エラー デコードするURIは、有効なエンコーダではありません。
htaccessいれてもいれなくてもエラーでる模様、、。
いろいろ原因調べて、Remember Meにあるようです。
なので、Remember Meをデフォルト・テンプレートから持って来たらエラーなくなりました。
htaccessいれても大丈夫です。
いろいろ対策されてるRemember Meの方がいいんだろうけど、、。しばらくは、デフォルトでいきます。
何回もコメントしてすいませんでした。
>miyotanさん
こんばんはー。
とりあえずうまくいったみたいですね。良かったです。
Remember Meですか…了解しました。
私も変更したスクリプトを使っているのですが文字化けしないのは何故?
ますます訳が分からなくなってきましたが検証する価値はありそうですね。
ご連絡ありがとうございました。
すみません、^_^;
2重トラックバックしてしまいました。
お手数ですが削除お願いします。
いつもすみません。m(__)m
>miaowさん
こんばんは。
ご連絡ありがとうございます。
遅くなりましたが先程削除しておきました。
どうぞお気遣いなく。
Remember Meの件は、IE6 SP2だからかも、、。
IEいやーん(汗。
でもそろそろきつねさんに手を出そうと思ってる今日この頃、、。
>みよたんさん
SP2と関係ありですか…。
う?ん…今日は寝ます(逃避モード)。
きつねさんは手ごわい
.htaccessファイルは、一番目の方法でやってみると、うまい具合に今まで不具合のあったページが文字化けしなくなりました。
よかったですー。
ありがとうございました!
>ミッチさん
こんにちはー。
トラックバックありがとうございます。
文字化け対処うまくできたようですね!
これで一安心です。
ここのところ、何人かのかたから やむやむで 個別アーカイブのページを開くと 文字化けしてると言われ、この方法を試してみました。自分が見てる分には 一度も文字化けしたことないのですが・・・不思議ですね。これで文字化けしなくなってくれるといいんですけど。
>さえらさん
こんばんはー。
記事参照ありがとうございます。
文字化けはOSやブラウザ依存なんでしょうかね。
多分この対処で大丈夫かと(自信なし)。
yujiroさん、おはようございます。
昨日は色々とありがとうございました。
文字化け対策として、こちらのエントリーを参考にさせて頂きます。
htaccessは初めての試みなので、緊張もしていますが・・・(^_^)
又、何かありましたらこちらで連絡致します。
>ねーさん
了解いたしました。
ご連絡&記事参照ありがとうございます。
こんにちは。
先程、テキストエディタで.htaccessファイルを作成してみました。
アップロード前に確認したいのですが
記述内容は
AddDefaultCharset UTF-8
AddType "text/html; charset=UTF-8" .html .php
の2行だけで大丈夫ですか?
又、アクセス権は変更する必要がありますか?
>ねーさん
こんばんは。まずは
AddDefaultCharset UTF-8
の1行だけでお試しになってください。
よろしくお願い致します。
こんばんは。
.htaccessを設置してみました。
私のPCからは何の変化も見られませんが
文字化けしている友達の状況が改善されればいいなと思っています。
色々とありがとうございました。
トラックバックを2回打ってしまったので1つは削除して下さい(^^;
お手数かけて申し訳ありません。
>ねーさん
こんにちは。
ご連絡ありがとうございました。
改善されることを願ってます。
トラックバック重複、削除しておきました。
お気遣いなく。
yujiro さん
いつもお世話になります。
今ubicast Bloggerを使おうとしているのですが、アカウントセットアップで”ユーザー情報の取得に失敗しました”と出てしまいます。
mt-xmlrpc.cgiのパスもあっているし、パスワードもAPI用を登録して入れました。mt-xmlrpc.cgiが悪いのか、サーバかMT自体が壊れているのか分かりません。この記事に関連があるのかなと思い、お問い合わせした次第です。
ちなみに私のサーバにはhtaccessがあるのですが、上記の記述はありません。試してみる価値がありますか?何か解決作が分かれば、ご教授いただきますよう宜しくお願いします。
yujiro さん
こんばんは。
せいざんと申します。先ほどの記事への追記なのですが、自分のブログにコメントを書こうとしてTypekeyにサインインしようとするとサインインができません。サイトのオーナーにお問い合わせくださいと出ます。自分がオーナーなのですが、よく分かりません。先ほどの質問と何か関係があるような気がして、再びコメントしました。何か情報があれば宜しくお願いします。
>せいざんさん
こんばんは。
1番目のご質問についてはこの記事とは関連がないと思われます。こちらでも情報はありませんのでお許しください。
2番目のご質問はご自身のサイトでサイン・インされたコメントがあるようですが解決されましたでしょうか?
以上です。
それではよろしくお願い致します。

