ok, I follow.
Note that even if it seems to work, that doesn't make what you say correct. Depending on how the client encodes the request, the OP's code will work. That doesn't make it right.
I suspect one of two reasons for the differences:
Your client encoded the request such that the initial decoding is a no-op (e.g. it %-encodes every byte with the 8th bit set). You won't be so lucky with a different client.
Maybe your version of decode silently does nothing (instead of dieing) when it guesses a double-decode is being attempted. If so, that will make the OP's code work for all but unlikely inputs. But that means you're relying on decode to catch your bug.
Update: Cleaned up. Replaced first paragraph. (It was "Gotcha.", which is ambiguous.)
In reply to Re^6: Confusing UTF-8 bug in CGI-script
by ikegami
in thread Confusing UTF-8 bug in CGI-script
by wanradt
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |