{進捗記録}{進捗}{Firefox}{不具合報告}{交度}{希哲15年2月16日の開発}{半角スペースが + に置き換えられてしまう不具合について}{%20}{原因判明}{@URI.dcd()}(46)

{希哲15年2月16日3歩 K#F85E/E74C-7917}

輪郭に空白名があると検索→新規作成の際にASCII加算符に置き換えられてしまう」という不具合報告について,ようやく尻尾が掴めた気がしたので再調査に入る。

原因判明修正完了

結局,decodeURIComponent()+半角スペース置換しないというよく知られた落とし穴のせいだった。

decodeURIComponent() に渡す前に置換処理をしておくというのが定石らしいので @URI.dcd()修正

+ と半角スペースという時点で URI 符号化絡みの問題なのは明らかだったが,最初の調査では交度論理的問題が見つからず,再現性明確ではなかった。

当然,全知検索窓に直接入力すれば問題なく,Firefox ではアドレスバーURI を直接編集して半角スペースを含んだ検索をしても問題なかった。問題は,アドレスバーに直接検索語を入力した場合で,この場合は %20 ではなく + に半角スペースが置換され,これが JavaScript 側ではそのまま通っていた。

更に問題をややこしくしていたのは,捌き手では問題なく + を半角スペースに復号していたため,そのような検索をすると表示上も描出も問題なく行われるが JS で制御している描出後の転送先のみ + が残った検索になっていたことだった。

さっき何となく半角スペースを含んだ検索語から描出したことで再現し,交度を見直してもやはり問題が分からず,まさかと思って decodeURIComponent()仕様確認したところで原因判明した。

今後のためにもなる勉強になって良かった。

{decodeURIComponent()}

{}