从URL清理外来字符/口音

Gre*_*reg 5 c# asp.net string asp.net-4.0

我需要编写一个服务器端函数来清理URL编码的字符串.

示例查询字符串:

FirstName=John&LastName=B%F3th&Address=San+Endre+%FAt+12%2F14
Run Code Online (Sandbox Code Playgroud)

当我通过时,HttpUtility.UrlDecode()我得到:

FirstName=John&LastName=B?th&Address=San Endre ?t 12/14
Run Code Online (Sandbox Code Playgroud)

这个SO帖子的功能看起来很完美但是它需要已经有重音的已解码字符串:

RemoveDiacritics('Bóth`) ==> 'Both';
RemoveDiacritics('San Endre út 12/14`) ==> 'San Endre ut 12/14';
Run Code Online (Sandbox Code Playgroud)

如何在不获取所有这些?字符的情况下解码URL ?

我不能做任何客户端或改变他们进入我的功能的方式.

Dou*_*las 7

我同意已经提出的论点; 但是,如果您始终从同一客户端接收编码字符串,则可以匹配其编码.在这种情况下,它们似乎使用ISO/IEC 8859-1,非正式地称为Latin-1,它是使用中最流行的8位字符集之一.您可以使用以下代码解码ISO/IEC 8859-1(这将正确解码您提供的示例字符串):

HttpUtility.UrlDecode(encodedInput, Encoding.GetEncoding("iso-8859-1"));
Run Code Online (Sandbox Code Playgroud)

MSDN保证.NET Framework本身支持上述代码页,无论底层平台如何; 请参阅编码类支持的编码表.