Вы уверены, что символы были правильно закодированы в URL?
Если я URL-адрес enode 公共汽車
, я получаю %E5%85%AC%E5%85%B1%E6%B1%BD%E8%BB%8A
Если я передам %E5%85%AC%E5%85%B1%E6%B1%BD%E8%BB%8A
в качестве параметра запроса, он будет работать нормально, но не с вашей строкой, %C8%BC%C6%F8%D4%EE%BE%DF
.
Если я попытаюсь декодировать вашу строку с помощью онлайнового кодировщика / декодера URL , это также не сработает, аналогично, если я попытаюсь System.Text.Encoding.UTF8.GetString
.
Так что я думаю, что проблема в том, что отправляемая вами строка была закодирована неправильно.
** ОБНОВЛЕНИЕ **
При ближайшем рассмотрении выясняется, что символы в строке URL-адреса закодированы в GBK (на странице, на которую вы ссылаетесь, также указано, что используемый набор символов - это GBK).
Я не уверен, как именно это сделать, но если вам нужен параметр URL в другой кодировке, вам нужно будет преобразовать GBK в эту другую кодировку.
** ОБНОВЛЕНИЕ **
ОК, думаю, я понял :) 1030 *
Похоже, ASP.NET декодирует URL, используя неправильную кодировку. Вы можете заставить ASP.NET декодировать запросы как GBK, добавив это в ваш файл web.config:
<system.web>
<globalization requestEncoding="gbk" />
</system.web>
Если по какой-то причине вы не хотите этого делать, вам придется самостоятельно проанализировать и декодировать необработанный URL-адрес:
// TODO: Grab this from Request.RawUrl
string urlParam = "%C8%BC%C6%F8%D4%EE%BE%DF";
// Source encoding is GBK
Encoding gbk = Encoding.GetEncoding("gbk");
string decodedParam = HttpUtility.UrlDecode(urlParam, gbk);
decodedParam теперь будет содержать то, что вы хотите, 燃气灶具
("газовая плита", я думаю:)