Do not try to decode percent sign followed by invalid hex digits.

I think that when validating external input it is more important to get at least some result rather than non-informative NumberFormatException.