先日、このブログの記事に対するコメント投稿がエラーになる症状が出ていましたが、18日の0時過ぎに回復しました。
エラーになっていた原因と、それに対してとった対策について書いておきます。
1. 発覚
ブログ開設の翌日(16日夜)、PUSH!x3部屋に顔を出したところ、finalさんとjoriさんからコメント投稿ができないとの連絡をいただきました。コメント投稿のテストはしていなかったことを思い出し、自分でコメント投稿してみましたが、何度やっても「コメント投稿エラー コメントを投稿できませんでした。エラー:不正な要求です。」と出てエラーになることが確認できました。
2. 原因の探索
最初に気づいたのは、表示されるはずのcaptchaが表示されていないという点でした。captchaに対応する数字を入力するステップを踏んでいないため不正な要求と判断されているのではないか、captchaが表示されないのはインストールすべきperlモジュールが不足しているためではないか、と考えたので、いくつか未インストールであったperlのモジュールを全てインストールし、mt-check.cgiでみて未使用のDB(PostgreSQLやSQLite)のインターフェース以外は全部入りの状態にしてから再トライ → 結果はNG。
その後、いろいろ調べたあと、Firefoxのエラーコンソールを確認してみると、blogディレクトリのmt.jsでjavascriptのエラーが起きていることが分かりました。具体的には、451行目で次のようなエラー内容です。
missing ; befor statement
http://gt.hobby-site.com/blog/mt.js
phrase = 'コメントするにはまず\<a href=\"javas\cript:void(0)\" onclick=\"return mtSignInOnClick(\'comment-greeting\')\"\>サインイン\<\/a\>してください。';
なんじゃこりゃ?
ちなみに12回出現する「\」の文字コードは、815Fです。これはShift_JISの全角バックスラッシュです。
これではjavascriptが動くわけないです。半角のバックスラッシュ(\)であるべき文字が全て全角のバックスラッシュに文字化けしている状態です。
過去の経緯から、MTで使用する文字コード(PublishCharset)をShift_JISに設定しているので、Shift_JISになっていること自体はOKなのですが、全角はどう考えてもおかしいですよね。
3. 対策
最初にとった対策は、文字化けしているmt.jsを直接手作業で直してあげるという方法です。
しかし、/blog/mt.jsは、ブログの再構築を行うと元に戻ってしまうようで、この方法はNGでした。
ここで、方向性としてはmt.jsを生成するときに文字化けを起こさないようにMTのperlのコードのバグ(?)を修正するか、あるいは文字化けが発生しない文字コードを選択してブログを作り直すか、どちらかという状況になりました。MT初心者だし、とりあえず早く確実に直したいし、ということで、後者の方向性でいくことにしました。
mt-config.cgiでPublishCharsetをデフォルトのUTF-8に戻し、PHP化もやめて、記事を全て復元してみたところ、ようやくコメント投稿ができるようになりました。
こうしてみると、MT 4.21-jaはShift_JISに設定するとコメント投稿できないというバグがある、ということなんだと思うのですが、どうなんでしょう。
アドバイス等ありましたら、よろしくお願いします。

どうもです。
色々検索して調べてみましたけど、MT4以降でShift_JISに起因するコメント投稿が出来ないというバグの報告は無さそうな感じですね・・。実際Shift_JISで運用されている方もおられるみたいですし、これが問題とは思えないんですけどねー。
ちなみにPublishCharsetをShift_JISに設定されていると思われますが、これはブログ構築前に行われていますか?具体的には、ファイルアップロードしてmt.cgiを実行する前にmt-config.cgiに「PublishCharset Shift_JIS」を追記してから、mt.cgiを実行して構築開始するという事です。これを先にやらないとおかしい事になるかもしれません。
出来ればhtmlではなくPHPで運用された方がモジュール修正する際の手軽さなど考えても後々便利かもしれません。またブログ記事のアーカイブパスは日付時間.phpとなるように(例:200809201128.phpみたいに)した方が良いです。記述的には「%y/%m/%d%h%n%s%x」です。今後バージョンアップなどをする時などにこの辺りの整合性が取れず、URLそのものが変わってしまい検索エンジンから来る方が404エラーで見れなくなる可能性がありますので。
まあMTは基本UTF-8で動かすのが良いみたいですけどね。私はEUC-JPで運用していますが、確かteacupから移行させるときにUTF-8だと文字化けが修正できなかったかの理由でEUC-JPにしていたと思います。
SYORIさん、アドバイスありがとうございます。
確かに、文字コードがらみでコメント投稿できないという情報は無いようなんですよね。私だけの問題なのかも。
PublishCharsetですが、はじめにShift_JISに設定してmt.cgiで構築し、ダメだったのでUTF-8に変更し、ブログ全体を削除して新たに構築し直して、という手順でやっています。
ファイル名の規則は設定しようと思って忘れていました^^;ので設定しておきます。
それから、SYORIさんの場合、
mt-config.cgiのPublishCharsetは、EUC-JPだと思いますが、
PHP.iniのmbstring.internal_encoding
mbstring.http_output
default_charset
もやはりEUC-JPに統一されていますか?
テスト