В JavaScript:
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
Есть ли эквивалент для приложений C #? Для экранирования символов HTML я использовал:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Но я не уверен, как преобразовать совпадение в правильный шестнадцатеричный формат, который использует JS. Например этот код:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Возвращает " %a9%221a"
для "©√"
а "%C2%A9%E2%88%9A"
. Похоже , мне нужно разбить строку вверх в байтах или что - то.
Edit: Это для приложения окон, только элементы , доступные в System.Web
являются: AspNetHostingPermission
, AspNetHostingPermissionAttribute
, и AspNetHostingPermissionLevel
.
HttpUtility.HtmlEncode
/ ДекодироватьHttpUtility.UrlEncode
/ ДекодироватьВы можете добавить ссылку на
System.Web
сборку, если она недоступна в вашем проекте.источник
Я пытался сделать полностью совместимый аналог javascript encodeURIComponent для c #, и после 4-часовых экспериментов я нашел это
КОД С #:
результат: !% 40% 23% 24% 25% 5e% 26 * () _% 2b% 20some% 20text% 20here% 20% d0% b0% d0% bb% d0% b8% 20% d0% bc% d0% b0% d0% Ьс% d0% b5% d0% b4% d0% быть% d0% b2% 20% d0% b1% d0% b0% d0% BA% D1% 83
После того, как вы его декодируете с помощью Javascript decodeURLComponent ();
вы получите это :! @ # $% ^ & * () _ + текст здесь али мамедов баку
Спасибо за внимание
источник
Uri.EscapeDataString("!@#$%^&*()_+ some text here али мамедов баку")
вместо этого.Uri.EscapeDataString
кодирует символы '(' и ')', аHttpUtility.UrlEncode
не кодирует .System.Uri.EscapeUriString (), похоже, ничего не делала, но System.Uri.Escape Data String () у меня работала.
источник
Попробуйте
Server.UrlEncode()
, илиSystem.Web.HttpUtility.UrlEncode()
в случаях, когда у вас нет доступа кServer
объекту. Вы также можете использовать,System.Uri.EscapeUriString()
чтобы избежать добавления ссылки наSystem.Web
сборку.источник
Uri.EscapeUriString()
соответствует JavaScript,encodeURI()
который сохраняет зарезервированные для URI символы. такие как/
,&
... как есть (плюс#
), в то время как - как вы обнаружили, чтоUri.EscapeDataString()
что соответствует в JavaScriptencodeURIComponent()
.Для приложения Windows Store у вас не будет HttpUtility. Вместо этого у вас есть:
Для URI перед знаком?:
Для имени или значения запроса URI после символа "?":
Для имени или значения запроса в формате x-www-form-urlencoded в содержимом POST:
источник
Вы можете использовать объект Server в пространстве имен System.Web
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode и Server.HtmlDecode.
Изменить: плакат добавил, что это приложение для Windows, а не веб-приложение, как можно было бы подумать. Перечисленные выше элементы будут доступны из класса HttpUtility внутри System.Web, который необходимо добавить в качестве ссылки на проект.
источник