| No.096 | 投稿日時: | 2003/08/30(土) 15:16 <↑親記事:No.094> |
| 投稿者: | 花太郎 |
アドバイスありがとうございます。
状況をきちんと説明できるか自信がありませんが、再度試みます。
3つの異なるサーバでテスト中のPerlによる掲示板スクリプトがあり、
2つのテスト環境では問題なく動作し、
1つのサーバに設置したものだけが特定の現象でログを崩すというトラブルに遭います。
新規投稿やレス機能のほかに、編集上書きの機能をつけており
ログを呼び出し→表示し→上書き保存
したときにだけ、修正した記事表題が文字化けをおこし
記事本文に入れた改行は
$value =~ s/\r/<br>/g;
でHTMLの改行タグ<br>に置き換えされるべきものがされません。
最初は一連の処理の部分を通過していないのかと思いましたが、文字化けと余計な改行コードを挿むものの、ログは更新されるので、
if($ENV{'REQUEST_METHOD'} eq "POST"){
からはじまる
$value =~ s/\r\n/\r/g;
といった箇所を通過はしています。
消去法で原因を突き止めたく、まず文字化けの際、必ずJISコードになるので
&jcode'convert(*value, "sjis", "jis");
と記述し結果を見ました。
&jcode'convert(*value,'sjis');
としていた、指定コードなしのgetcode()のときと変わらず、やはりJISになりました。
同じ画面の別の入力欄から修正した文字は化けません。
お名前、見出し、URL・・・等あって、見出しの入力欄だけが必ずJISに。
こちらの過去ログの半角カナ対応とやや類似すると思いますが
知りたいのは
&jcode'convert(*value, "sjis", "jis");
として、コードを指定しても無効な場合があるのかどうか。
また新規に記入する際と
同じフォームから、同じ機種やブラウザで同じ人間が入力し、一度目は正しく判別され、二度目は必ず文字化けする、
ということはありえるのかどうか。
編集記事の表示や上書きの方法については、このスクリプト以外の同じような機能で、過去に同じサーバ上でまったく問題なく上書きできているので、もっと別の原因かとは思いつつ、応急処置的に対処した
&jcode'convert(*value, "sjis", "jis");
で変化がないことには戸惑っています。
文字化けはブラウザ側の問題のケースという例もあるようですが
3つのテスト環境にて、MAC/IE+各ブラウザで動作テストをし、
2つの環境ではどの場合も正常、1つの環境でだけ、どの場合も不具合となっております。