Encode.pm版lib/MT/I18N.pm
Jcode.pmではなく、Encode.pmを使って実現したlib/MT/I18N.pmを作ったので公開します。
MT-I18N with Encode.pm - Ogawa Code
Perl 5.8.0以降を使っている場合、上記のURLから得られるI18N-encode.pmでlib/MT/I18N.pmを置き換えると、Movable Type日本語版で、Jcode.pmではなく、Encode.pmを使うことができます。これにより、文字化けが減少したり、性能が向上したりすることが期待されます。
Movable TypeのShift_JIS、EUC-JP、UTF-8以外の非ASCII charsetへの対応を視野に入れると、このI18N-encode.pmがひとつの叩き台になるのではないかと思います。チャレンジャーは是非使ってみてください。
このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/190
いつもお世話になっております。
先日、本エントリにTB 「random characters 文字化け・・」するとともに、Encode.pm版lib/MT/I18N.pm にチャレンジしたのですが・・・、
Xrea.comさんのサーバ(Perl: 5.008004)では、encode.pm を利用する cgiスクリプトの動作は問題ありませんでした。動作確認のために、[Encode.pm 版 access cgi ver.3.02 http://atworks-online.net/ ] を使用いたしました。しかし、MT では、ブラウザでmt.cgiにアクセスすると、@INC 指定のPATHを参照します。また、/usr/lib/ 内も参照しますが、 Can't locate Encode.pm in @INC (・・ と返し、mt.cgiのアクセスエラーとなります。lolipopさんとは、サーバのインストール環境が異なるようです。Jperl.pmとは異なり、ホームディレクトリ内にEncode モジュールを設置する必要がないですし、サーバーによってアクセス不能となる問題は I18N.pmの編集だけで解決できるでしょうか。よろしくお願いいたします。因みに、Perl5.8 へのPATHは /usr/bin/perl ないし /usr/local/bin/perl です。
mt-check.cgiの148行目あたりに以下のように加えて、mt-check.cgiを実行してみてください。
[ 'Encode', 0, 1, 'Encode is required for Encoding conversion.' ]
正しく見つかれば表示されるはずです。PerlへのPath(スクリプトの先頭行)は/usr/bin/perl、/usr/local/bin/perlの両方を試してみてください。見つかる方のPathをmt.cgi, mt-comments.cgiなどの先頭行でも指定する必要があります。
ご教示いただきまして、ありがとうございます。
早速、試してみます。MT 利用者の少なくないXrea.comさんのサーバに関することですので、結果についてご報告させていただきます。なお、初回質問で"Jperl.pm"とあるのは、Jcode.pmです。単純なミスで失礼いたしました。
サーバ機によって、perlのバージョンが異なり、Perl: 5.008004 のサーバーは
Your server has Encode installed (version 2.08).
ですし、旧バージョンのperl 5.6.*がインストールされたwwwサーバは、もちろんencodeはありませんでした。実装状態が異なるサーバ(があると知らずに)でチェックしたので、混乱してしまいました。しかし、Encode.pm標準実装のサーバのmt.cgiへブラウザでアクセスしても、エラー(500)表示となります。
(問題解決) ご指導ありがとうございました。2つ目のTBのとおり、cgiの編集
変更前 (先頭行):
#!/usr/bin/perl -w
変更後 (先頭行、2行目)
#!/usr/bin/perl
require 5.008;
後、ブラウザでのアクセスが可能となりました。
今後ともよろしくお願いいたします。
I18N-encode.zip、MT3151-jaとMT317-jaのI18N.pmを比較したところ変化が無かったようなので、3.17でも利用させてもらってます。
「~」を多用するのでこれがないとかっこわるい……