rfc 3986に準拠させるために、URI をエンコードする関数を作成しようとしています。
つまり、英数字以外のすべての文字をチェックします。/?:@&=+$-_.!~*'()|\^[]``#
に置き換えられます%[hex octet]
関数が既にエンコードされた URI で呼び出された場合、コードがそれを台無しにしないことを確認したいと思います。
これまでのところ、'%' 記号とそれに続く 2 つのオクテット文字を探しているだけです。私が見つけた他の予約文字はすべて置き換えます。
私がしなければならない他のチェックはありますか?
セキュリティの問題は気にしないでください。それらは別の場所で処理されています。