 <p>I've tested this and found that <code>HttpUtility.UrlDecode("%E9")</code> returns question mark that You mentioned. It seems that it You have to manually specify appropriate encoding for this to work correctly with <code>%E9</code> encoded value.</p> <p>You can try:</p> <pre><code>HttpUtility.UrlDecode("%E9", System.Text.UnicodeEncoding.Default); </code></pre> <p>or</p> <pre><code>HttpUtility.UrlDecode("%E9", System.Text.UnicodeEncoding.UTF7); </code></pre> <p>Both should return the character decoded as You expected.</p>