SmallStyle


2006-05-26

_ Ajax を使った tDiary のプレビュー表示プラグイン(2)

category_to_tag で表示されるタグ少し見やすくを書いてる途中に,プレビュー表示を見ていたら,どうも本文中にセミコロン (;) が入っていると,そこでとぎれてしまうようです.

んー,テスト不足だったな.とりあえず, livehttpheader で送信されている POST 要求をキャプチャ.プレビュー表示プラグインではセミコロンが encode されずにそのまま送信されているけど,通常のプレビューボタンを用いた場合は,セミコロンも encode されている.

調べてみると,フォームの区切り文字に「&」の代用として「;」をサポートすることが推奨されている (via:Namazu-devel-ja 676] URI属性値のセミコロン記号) ようで,このためセミコロンをそのまま送信すると,そこで本文が区切られてしまっていたのが原因でした.

で,Javascript には URI エンコードを行うメソッドとして,escape(),encodeURI(),encodeURIComponent() の 3 種類があり,それぞれエンコード対象の文字列が異なるようです.(escape() は古いメソッドでおすすめできないらしい)

PHP と JS の URI エンコード比較に,このあたりのことが詳しくかかれていて参考になりました.結局,Javascript でセミコロンを URI エンコードしたい場合は,これまで encodeURI() を使っていたのですが,必要に応じて encodeURIComponent() を使う必要があるみたいです.

というわけで,この部分を修正したのでご利用の方は入れ替えをお願いします.

これでセミコロンが本文中に入っていても大丈夫なはず.


about me

いろいろと興味を持ったことを書いてます.ちょっとしたことは hb(@smallstyle) on Twitter で書いてます.

Archive

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|12|