全記事がトップページから消えたので新たに投稿。
ついさっき、ふと思いつきました。
「mt.cfgがEUC-JP以外の文字コードで保存されていたらどうなるか?」と。
MT4iは、頭でmt.cfgのPublishCharsetを読み込んで、そのBlogで使用している文字コードを判定しているんですがね。以下のような感じで。
####################
# PublishCharsetの取得
if (lc $mt->{cfg}->PublishCharset eq lc "Shit_JIS") {
$conv_in = "sjis";
} elsif (lc $mt->{cfg}->PublishCharset eq lc "UTF-8") {
$conv_in = "utf8";
} else {
$conv_in = "euc";
}
MT4iのプログラムはEUC-JPで書かれています。例えば、Shift_JISの"UTF-8"とEUC-JPの"UTF-8"を比較するとこれ、イコールにならないんですよね。
というわけで、もしもmt.cfgがEUC-JP以外の文字コードで記述されていた場合、上記ロジック後、$conv_inは100%、"euc"になります。あうう。
この為、DBから読み込んだ文字列をすべて一旦EUC-JPに変換してあげる
if ($conv_in ne "euc") {
&$jcnv(\$_[0],'euc', $conv_in);
}
このロジックをスルーして、文字化けが発生していたものと思われます。
もう一つ。知らなかったんですけど、Jcode.pmのz2hって全角カナを半角カナに変換するだけじゃなく、文字コードを自動判別してEUC-JPに変換しちゃうんですね(ですよね?)。上記ロジックをEUC-JPからUTF-8に変換するように書き直してうちで動かしてみたところ、何故かほとんど文字化けが発生せず、しかし「稀に」文字化けが発生するという、まさに悩まされていたのとまったく同じ症状が再現されました。Jcode.pmの自動文字コード判別は失敗することもあるようで(短い文字列だと特に)、それで「稀に」文字化けが発生していたものと思われます。
しかし、この「稀に」というのに随分と悩まされました。みんな同じロジックを通っているはずなのに、文字化けするケースとしないケースがあるわけですからね。みんな文字化けしちゃってれば原因の特定は比較的容易なんですけど、症状が出たり出なかったりっていうのはとても厄介です。
っていうか、これで本当に解決かどうかは未だ分からないんですが。
というわけでβ7です。
・MT4i version 1.3β7(正式版を公開したのでリンクを外します)
PublishCharsetの取得部分にて、mt.cfgより取得した文字列をEUC-JPに変換してから比較するように変更しました。
有志の皆様の動作報告を、心よりお待ち申し上げます。
<う>
EUC-JPなので参考になりませんが,動きました。
素晴らしいスクリプトですね。SQLに変えてよかったと思います。
ところで,使う人があまりWebの操作になれていないので,
1 アクセスキータグをつけることはできないものでしょうか
2 画像をみたあとbackボタンは作れないものでしょうか
質問ばかりで申し訳御座いません。
UTF-8対応の方が先でしょうから,どうか,その後でもお返事をいただけると幸いです。
それでは,どうもありがとうございました。
管理人
ご試用ありがとうございます。
EUCなら問題ないんですよね。
現在、有志の方に手伝って頂きながら、UTF-8運用時のバグ潰し中です。
>1 アクセスキータグをつけることはできないものでしょうか
これを埋め込むのは、正直どうってことないんですが、現在表示されている記事番号をどうするかという問題と、キーの数は限られていますからどう割り振るのか、という問題があります。1ページに表示できる記事数も限られるでしょうし。
また、MT4iは「for i-mode」と言いながら、i-modeや携帯電話に限らず、(自分の中では)PDAユーザーなど「さくさくアクセスしたい」ユーザーの為のプログラム、という位置付けで作っています。
なので、あまり独自仕様のタグ等は使用したくない、というのが正直なところです。
ゆくゆくは、Agentから機種を判別してタグを使い分けるなんてこともしたいとは思っていますが、思っているだけで終わる可能性もあります。
>2 画像をみたあとbackボタンは作れないものでしょうか
これは考えていました。
ただ、i-modeとか携帯電話だとBackボタンてハードボタンのどれかに割り当てられていません?
そう思って「これでもいいか」と思ってたんですけど、まったく戻る手段が無くなってしまう機種があるのだとすれば、早急に機能追加する必要があるかもしれませんね。
そうでなければ、コメントの表示なんかの方が優先度は上だと思っています。
<う>
どうもレスありがとうございました。
バグ潰しお疲れさまです。自分の手元に環境がないとなかなかつらいですね。
1 アクセスキータグについて
そうですね。必要不可欠な機能ではないし,それによってサクサクした感じが失われては元も子もないですから,つけない方がいいかもしれませんね。
2 画像をみたあとbackボタン
私は携帯電話に詳しくないのですが,おっしゃるように,「クリア」ボタンで戻れるようですね。これは,i-modeはもちろん,auの古い機種でも大丈夫だったので,多分大丈夫だと思われます。
ただ,わからない人もいるかと思いまして。ひとこと「backボタンで戻ってください」ぐらいの表記を入れられたらなあと思いました。
たしかに,コメントの表示の方が優先度は上ですね。コメントも携帯電話から見ることができれば嬉しい限りです。
それでは。失礼いたします。
管理人
Backボタン(正確にはリンクになると思います)は確実に組み入れようと思ってますんで、よろしくお願い致します。
[cipher]
開発お疲れ様です。
うちはeuc/MySQLなんで今さらなんですけれども、何の問題もなく動作しました。
以上、動作報告まで。