2004年11月23日

●.htaccessによる文字化け対策

TypeKey認証やコメント投稿の後で文字化けが発生するという質問を最近何件か頂いています。TypeKeyの文字化けについてはHTTPリダイレクトを伴っており、ページ直前のHTTPレスポンスで返却されたcharsetを見てしまうのが文字化けの要因と思われます(発生するサイトとしないサイトの違いは不明です)。下記のサイトに解説があります。

ただしコメント投稿後の文字化けは原因不明(リダイレクトではないという認識)です。


上記のサイトにも少し書かれていますが、リダイレクトによる文字化け解消について .htaccess を利用する方法がありましたのでご紹介します。


  • .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 が使われていることが前提になります(多分この文章は無視されても大丈夫だと思います…)。


  • ファイル配置

  • .htaccess を配置(アップロード)します。このファイルの内容は、ファイルを配置したディレクトリおよびそのサブディレクトリ全てに適用されますので(サイトのトップディレクトリにあると思われる)index.htmlが配置されているディレクトリに配置します。


    以上です。なお上記の対策は動作を確認できてないこともあり、完全な不具合解消を保証するものではありませんので予めご了承ください。また本設定がコメント投稿後のページ表示にも適用されればいいのですが(CGIからの出力は一旦HTTPアクセスが行われると思っているので適用されそう?)、そうでなければカスタマイズされたページのどこかに文字化けの要因が潜んでいると考えられます(感覚的にはHTMLタグの文法エラー等ですが改善性については未知です)ので、申し訳ございませんが「デフォルトのテンプレートから少しずつカスタマイズして動作をチェックしてみてください」という原始的なアドバイスしかできません。併せてご了承願います。
    ↑一応動作確認できているサイトあります。なお文字化けの原因は「続きを読む」を折りたたむスクリプトにあるようでした。ご利用中の方にはご迷惑おかけして大変申し訳ございません。とり急ぎお詫びまで。

    Posted by yujiro at 14:25 | Popup Comments
    トラックバックURL

    このエントリーのトラックバックURL:
    http://yujiro.dyndns.org/blog/koikikukan/mt-tb.cgi/381

    トラックバック実行後、タイムアウトした旨のメッセージが表示されることがありますが、トラックバック先の処理は(これまでの経験上)正常に終了しています。正常に送信されたかどうかはトラックバック先の個別アーカイブページ等をご確認ください(タイムアウトについてはこちらの記事を参照ください)。
    また同一のトラックバックが重複してしまった場合、こちらで気がついた時に適宜削除しておりますので削除のご連絡は不要です。ただし期間が空いている場合(数日とか)は気がつかない場合がありますのでご連絡ください。

    トラックバック

    TypeKey認証時の文字化け対策 from Internet Zone::Movable TypeでBlog生活
    TypeKeyでサイン・インしたときや、逆にサイン・アウトしたときに、文字化けする場合がありました。全部じゃなくて、同じブログのなかでも、文字化けするエントリー... [続きを読む]

    トラックバック時刻: 2004年11月24日 14:15

    Blogカスタマイズメモ from Daily note
    文字化け現象に(・ε・?だったのが解決の模様。 今回ももちろんお世話になりました... [続きを読む]

    トラックバック時刻: 2004年11月25日 17:58

    TypeKey認証時の文字化け対策 from Magic White
    小粋空間 個別アーカイブに「続きを読む」を導入のスプリクト入れていて、TypeK... [続きを読む]

    トラックバック時刻: 2004年11月26日 03:04

    文字化け対策に.htaccessファイルを使う from 喜怒哀楽
    うちのMT。 なぜかこのページだけエンコードがUTF-8にもかかわらず、日本語(... [続きを読む]

    トラックバック時刻: 2004年11月29日 10:45

    文字化け対策をしてみました from リンゴ庵blog
    以前から、個別エントリーを表示させると「文字化け」が起こることは存じておりました... [続きを読む]

    トラックバック時刻: 2005年01月20日 17:36

    文字化け対策 from M*C~B Version~
    小粋空間さんの .htaccessによる文字化け対策をここでも取り入れてみました... [続きを読む]

    トラックバック時刻: 2005年02月01日 03:18
    コメント

    丁度先日、ウチのサイトも化けて気になってました
    今回のバージョンからの気もするんですが・・
    本来、サーバー側で対応するべきっぽいですね
    とりあえず、htaccess置いてみます^^

    投稿者 Deepsnow [TypeKey Profile Page] : 2004年11月24日 00:16

    こちらの方法で、うちもトップディレクトリにhtaccessファイルを置いてみましたら、以前の現象はなくなりましたー!
    すごいですー!
    重ね重ねありがとうございました!

    投稿者 ミッチ [TypeKey Profile Page] : 2004年11月24日 10:00

    もう・・・度々スミマセン。
    もっと動作確認してから書きこみしなきゃ!と思いつつ、うきうきしちゃうとつい・・・。
    で、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ファイルをおくとですね、以前エンコードがうまく選ばれなかったページはブログの文字コードを選んでくれてました。

    投稿者 ミッチ [TypeKey Profile Page] : 2004年11月24日 10:16

    >Deepsnowさん
    こんにちは。
    参照ありがとうございます。
    たしかにサーバー側で対応してくれればいいですね。
    ただレンタルサーバーの場合はユーザの文字コードを予測できないのであえて設定していない?という見方もできそうです。

    >ミッチさん
    こんにちは。
    参照ありがとうございます。
    念のため状況を確認させてください。
    どの方法を使われましたでしょうか?
    また2番目の方法も行われてましたでしょうか?
    よろしくお願い致します。
    またお時間ください…。

    投稿者 yujiro : 2004年11月24日 14:01

    こんばんは。
    一番目の「AddDefaultCharset UTF-8」でやってみたところ
    コメント後の文字化けがなくなりました。
    (ワタシがレンタルしてるロリポはApache1.3××のようです。)

    テンプレートをデフォルトにしてやり直すことも考えていたのですが
    これで落ち着いてくれると信じて様子をみます。
    とても助かりましたぁ。ありがとうございます。

    投稿者 miaow [TypeKey Profile Page] : 2004年11月24日 20:14

    >miaowさん
    こんばんは。
    いや~、うまくいったみたいで良かったです。
    Apacheのバージョンも調べて下さりありがとうございます。

    投稿者 yujiro : 2004年11月25日 00:12

    コメント&確認ありがとうございます。
    僕は、プログラムはさっぱりダメな文科系ゆえ、いつも参考、じゃなくて活用させていただいております。ダジャレならお役に立てるんですけどね… (^^;)

    投稿者 GAKU [TypeKey Profile Page] : 2004年11月25日 01:51

    >GAKUさん
    こんばんはー。
    いえいえ、ダジャレ仲間増えて嬉しいです。
    またのお越しを!

    投稿者 yujiro : 2004年11月25日 01:59

    yujiroさん、こんにちは。

    私が試した方法ですが・・・
    MTをPHP化にしたもので、迷わず

    AddType "text/html; charset=UTF-8" .html .php

    の方をやってみちゃったんです。

    他のは試してません。
    やってみた方が・・・・いいですよね。

    ちょっと実験してきまーす・・・。

    投稿者 ミッチ [TypeKey Profile Page] : 2004年11月25日 09:49

    >ミッチさん
    こんばんはー。
    実験お願いしてすいません。
    お待ちしております。

    投稿者 yujiro : 2004年11月25日 23:47

    文字化け対策と個別対応続き読むスプリクトいれるとうちの場合、javascriptエラーでます。

    MT3.11新規インストール環境だと違う部分あるのかなぁ、、、。

    htaccessには、http://lolipop.jp/?mode=manual&state=blog&state2=mt311_2&PHPSESSID=ee698e7b497933e3eecdbe48e0cca2cd
    ありますファイル保護やってたんですが、mt.cfgファイル保護しようとしてもエラーでます。

    なんでだろ、、。

    投稿者 miyotan [TypeKey Profile Page] : 2004年11月26日 13:59

    書き忘れました。
    エラー表示は、
    ライン45
    文字5
    エラー デコードするURIは、有効なエンコーダではありません。

    htaccessいれてもいれなくてもエラーでる模様、、。

    投稿者 miyotan [TypeKey Profile Page] : 2004年11月26日 14:14

    いろいろ原因調べて、Remember Meにあるようです。
    なので、Remember Meをデフォルト・テンプレートから持って来たらエラーなくなりました。
    htaccessいれても大丈夫です。

    いろいろ対策されてるRemember Meの方がいいんだろうけど、、。しばらくは、デフォルトでいきます。

    何回もコメントしてすいませんでした。

    投稿者 miyotan [TypeKey Profile Page] : 2004年11月26日 14:33

    >miyotanさん
    こんばんはー。
    とりあえずうまくいったみたいですね。良かったです。
    Remember Meですか…了解しました。
    私も変更したスクリプトを使っているのですが文字化けしないのは何故?

    ますます訳が分からなくなってきましたが検証する価値はありそうですね。
    ご連絡ありがとうございました。

    投稿者 yujiro : 2004年11月27日 00:09

    すみません、^_^;
    2重トラックバックしてしまいました。
    お手数ですが削除お願いします。
    いつもすみません。m(__)m

    投稿者 miaow [TypeKey Profile Page] : 2004年11月27日 10:01

    >miaowさん
    こんばんは。
    ご連絡ありがとうございます。
    遅くなりましたが先程削除しておきました。
    どうぞお気遣いなく。

    投稿者 yujiro : 2004年11月27日 22:55

    Remember Meの件は、IE6 SP2だからかも、、。
    IEいやーん(汗。

    でもそろそろきつねさんに手を出そうと思ってる今日この頃、、。

    投稿者 みよたん [TypeKey Profile Page] : 2004年11月28日 01:40

    >みよたんさん
    SP2と関係ありですか…。
    う~ん…今日は寝ます(逃避モード)。

    きつねさんは手ごわい

    投稿者 yujiro : 2004年11月29日 00:14

    .htaccessファイルは、一番目の方法でやってみると、うまい具合に今まで不具合のあったページが文字化けしなくなりました。

    よかったですー。
    ありがとうございました!

    投稿者 ミッチ [TypeKey Profile Page] : 2004年11月29日 10:46

    >ミッチさん
    こんにちはー。
    トラックバックありがとうございます。
    文字化け対処うまくできたようですね!
    これで一安心です。

    投稿者 yujiro : 2004年11月29日 14:43

    ここのところ、何人かのかたから やむやむで 個別アーカイブのページを開くと 文字化けしてると言われ、この方法を試してみました。自分が見てる分には 一度も文字化けしたことないのですが・・・不思議ですね。これで文字化けしなくなってくれるといいんですけど。

    投稿者 さえら : 2004年12月13日 12:34

    >さえらさん
    こんばんはー。
    記事参照ありがとうございます。
    文字化けはOSやブラウザ依存なんでしょうかね。
    多分この対処で大丈夫かと(自信なし)。

    投稿者 yujiro : 2004年12月14日 00:56

    yujiroさん、おはようございます。
    昨日は色々とありがとうございました。

    文字化け対策として、こちらのエントリーを参考にさせて頂きます。

    htaccessは初めての試みなので、緊張もしていますが・・・(^_^)

    又、何かありましたらこちらで連絡致します。

    投稿者 ねーさん [TypeKey Profile Page] : 2005年01月31日 05:44

    >ねーさん
    了解いたしました。
    ご連絡&記事参照ありがとうございます。

    投稿者 yujiro : 2005年01月31日 12:21

    こんにちは。
    先程、テキストエディタで.htaccessファイルを作成してみました。
    アップロード前に確認したいのですが
    記述内容は
    AddDefaultCharset UTF-8
    AddType "text/html; charset=UTF-8" .html .php
    の2行だけで大丈夫ですか?
    又、アクセス権は変更する必要がありますか?

    投稿者 ねーさん [TypeKey Profile Page] : 2005年01月31日 16:58

    >ねーさん
    こんばんは。まずは

    AddDefaultCharset UTF-8

    の1行だけでお試しになってください。
    よろしくお願い致します。

    投稿者 yujiro : 2005年02月01日 01:03

    こんばんは。
    .htaccessを設置してみました。
    私のPCからは何の変化も見られませんが
    文字化けしている友達の状況が改善されればいいなと思っています。
    色々とありがとうございました。

    トラックバックを2回打ってしまったので1つは削除して下さい(^^;
    お手数かけて申し訳ありません。

    投稿者 ねーさん [TypeKey Profile Page] : 2005年02月01日 03:39

    >ねーさん
    こんにちは。
    ご連絡ありがとうございました。
    改善されることを願ってます。

    トラックバック重複、削除しておきました。
    お気遣いなく。

    投稿者 yujiro : 2005年02月01日 11:20
    コメントする




    保存しますか?

    (書式を変更するような一部のHTMLタグを使うことができます)

    コメントありがとうございます。投稿が反映されるまでに時間がかかる場合がありますが「投稿」ボタンを続けてクリックされないようお願い致します。またコメント投稿処理が終了しない場合、トップページに反映されない場合がありますがコメントは正常に投稿されています(サーバ側の不具合のようです。こちらで操作してページに反映させています)。また1回のクリックでも重複してしまう場合がありますが適宜削除しておりますのでご連絡は不要です。