トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/74

ページの作成や編集にはユーザ登録が必要です。

半角の円記号(バックスラッシュ)の編集に問題があるSafariブラウザ対策をします。

  • 投稿者: おおなか
  • カテゴリ: 修正
  • 優先度: 低
  • 状態: 却下
  • 日時: 2003年11月06日 22時54分37秒

 内容

MacOSXの標準ブラウザである Safariでは、ページの文字エンコーディングがEUCの場合に、半角の円記号(バックスラッシュ,0x5c@euc)を?に変換して送信してしまいます。自分が書きこめないのはまだ良いのですが、他の人が投稿したページをSafariで開き、そのまま保存すると円記号をすべて?に置き換えてしまうというとんでもない迷惑がかかります。逆に自分がSafariを使っていなくてもSafariユーザに編集される可能性がある場合、そのような被害に合う可能性があります。

そこで(非常に安直なのですが)対策としてこのパッチを作成しました。これは、EditPage.pmをオーバーライドし、

編集時
テキストエリアの半角円記号(バックスラッシュ, 0x5c)をすべて全角の円記号(¥)に置換する。
保存時
保存した文書中の全角円記号をすべて半角円記号に置換する。

という動作を行うようにします。つまり、

Safariユーザ
半角の円記号を書きたいときは全角で書く(半角を入力しても?になってしまう)と保存時に半角に変換される。全角の円記号を入力する方法はないない。

非Safariユーザ

このように、弊害として全角の円記号が書き込めなくなりますが、それだけあきらめればSafariでも半角の円記号を書き込めるようになります。IE等のブラウザで半角円記号を入力しても問題ありません。

  • 無保証です。
  • EditPage.pmという非常にコアなモジュールの動作を変えますので、取り扱いには十分注意してください。
  • 3.5.1の EditPage.pmからコードを一部コピーしています。問題がありましたらお知らせください。また、3.5.1以外のものにインストールした場合の動作も未検証です。

 コメント

  • PartEditを使った場合、部分修正時にはこのパッチは有効にならない事に気づきました。 - ohnaka (2003年11月14日 21時58分23秒)
  • UAがSafariの場合はShift_JISでレスポンスするようにすればよいかもしれません。本体側での対応になりますが。 - たけぞう (2003年11月15日 10時18分15秒)
  • 確かにシフトJISではこのような問題は発生しないようです。そのような対応をしていただけると非常に助かります。FSWikiは携帯相手の場合はShift_JISでレスポンスするようになっているようですので、同じようにできたりしますでしょうか。Safari限定というのではなく、設置者がエンコーディングを選べるというのでも良いかと思います。 - ohnaka (2003年11月15日 22時14分21秒)
  • ログ解析すればわかるので、余計なお世話かもしれませんが、私の使っているSafariは、HTTP_USER_AGENTに
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/103u (KHTML, like Gecko) Safari/100.1

を渡しています。 - otti (2003年12月24日 15時39分52秒)

  • 念のため、MEAT TAG を変えて、LAN上で現象を確認してみたんですが、
    • Safari version=1.1(v100.1)
    • charset=shift-jisの場合。
      • 円記号、またはバックスラッシュ「0x5C」はそのまま送られる。
      • チルダ「0x7E」は全角の「〜」0x8160で送られることがある。どうもチルダは、単体で送ったり、その行が、ASCII CODEだけの場合は、変更しないけど、マルチバイトコードのなかで使われると変更される模様。
    • charset=EUC-JPの場合。
      • 円記号、またはバックスラッシュ「0x5C」は 1byteのクエスチョン「0x3F」で送られる。
      • チルダ「0x7E」はそのまま送られる。
    • 「Safari」というか「WebCore?」しっかりしてくれ - otti (2003年12月24日 17時56分03秒)
  • FSWiki3.5.2に対応した物をアップしました。3.5.2からPartEdit機能がEditPageに組み込まれたので、部分編集時も円記号エスケープに対応しています。 - ohnaka (2003年12月31日 19時19分44秒)
  • FSWiki3.5.6に対応した物をアップしました。Formatプラグインと共存できるようになっています。 - ohnaka (2004年09月21日 22時43分43秒)
  • PartEdit機能と同時に使えないバグがあったので修正しました。 - ohnaka (2004年10月04日 23時48分07秒)
お名前: コメント:
escapeyen-3.5.2.tgz escapeyen-3.5.6.tgz escapeyen.tgz

最終更新時間:2007年08月16日 14時44分15秒