ページの作成や編集にはユーザ登録が必要です。
半角の円記号(バックスラッシュ)の編集に問題がある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秒)
最終更新時間:2007年08月16日 14時44分15秒