Em JavaScript:
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
Existe um equivalente para aplicativos C #? Para escapar caracteres HTML, usei:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Mas não tenho certeza de como converter a correspondência no formato hexadecimal correto que o JS usa. Por exemplo, este código:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Retorna " %a9%221a"
para em "©√"
vez de "%C2%A9%E2%88%9A"
. Parece que eu preciso dividir a string em bytes ou algo assim.
Edit: Isto é para um aplicativo do Windows, os únicos itens disponíveis em System.Web
são: AspNetHostingPermission
, AspNetHostingPermissionAttribute
, e AspNetHostingPermissionLevel
.
HttpUtility.HtmlEncode
/ DecodificarHttpUtility.UrlEncode
/ DecodificarVocê pode adicionar uma referência à
System.Web
montagem se ela não estiver disponível no seu projetofonte
Eu tentei fazer analógico compatível completo do encodeURIComponent do javascript para c # e após minhas experiências de 4 horas, encontrei este
CÓDIGO c #:
o resultado é: !% 40% 23% 24% 25% 5e% 26 * () _% 2b% 20some% 20text% 20here% 20% d0% b0% d0% bb% d0% b8% 20% d0% bc% d0% b0% d0% bc% d0% b5% d0% b4% d0% seja% d0% b2% 20% d0% b1% d0% b0% d0% ba% d1% 83
Depois de decodificá-lo com decodeURLComponent () do Javascript;
você obterá o seguinte :! @ # $% ^ & * () _ + algum texto aqui али мамедов баку
Obrigado pela atenção
fonte
Uri.EscapeDataString("!@#$%^&*()_+ some text here али мамедов баку")
.Uri.EscapeDataString
codifica os caracteres '(' e ')' enquantoHttpUtility.UrlEncode
não.System.Uri.EscapeUriString () não pareceu fazer nada, mas System.Uri.Escape Data String () funcionou para mim.
fonte
Tente
Server.UrlEncode()
, ouSystem.Web.HttpUtility.UrlEncode()
nos casos em que você não tem acesso aoServer
objeto. Você também pode usarSystem.Uri.EscapeUriString()
para evitar adicionar uma referência àSystem.Web
montagem.fonte
Uri.EscapeUriString()
corresponde ao JavaScriptencodeURI()
- que preserva os caracteres reservados por URI. tais como/
,&
... como é (mais#
), enquanto que - como você descobriu, éUri.EscapeDataString()
que corresponde ao JavaScript doencodeURIComponent()
.Para um aplicativo da Windows Store, você não terá o HttpUtility. Em vez disso, você tem:
Para um URI, antes do '?':
Para um nome ou valor de consulta URI, após o '?':
Para um nome ou valor de consulta x-www-form-urlencoded , em um conteúdo POST:
fonte
Você pode usar o objeto Server no espaço para nome System.Web
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode e Server.HtmlDecode.
Edit: poster acrescentou que este era um aplicativo do Windows e não um da web como se poderia acreditar. Os itens listados acima estariam disponíveis na classe HttpUtility dentro do System.Web, que deve ser adicionada como uma referência ao projeto.
fonte