without namespace httputility c# javascript encoding urlencode

namespace - urlencode c#



UrlEncode-Javascript vs. C# (5)

Encoding.Default solo funcionará para usted si la página de códigos actual de su sistema está configurada en Europa occidental. Ahora bien, esto podría ser importante si el Javascript también se ejecuta en la misma máquina que el codificador .NET, pero de lo contrario, puede forzar la página de códigos a la de Europa occidental:

System.Web.HttpUtility.UrlEncode("éléphant", Encoding.GetEncoding(1252));

Esta pregunta ya tiene una respuesta aquí:

Tengo una URL que requiere algunos parámetros. Los valores de esos parámetros pueden ser caracteres acentuados, por lo que es absolutamente necesario urlEncode them. Extrañamente, veo una diferencia entre el comportamiento o Javascript y .NET.

Hagamos de cuenta que intento urlEncode la palabra "éléphant". En JavaScript (según este sitio web: http://www.albionresearch.com/misc/urlencode.php ), obtengo lo siguiente:% E9l% E9phant. Esto parece correcto para mí. Sin embargo, en .NET con esta llamada (System.Web.HttpUtility.UrlEncode ("éléphant")) obtengo "% c3% a9l% c3% a9phant". ¿Qué está mal? ¿Qué me estoy perdiendo? ¿Qué debo hacer si deseo obtener% E9l% E9phant en .NET?

¡Gracias!


En JavaScript (según este sitio web: http://www.albionresearch.com/misc/urlencode.php ), obtengo lo siguiente:% E9l% E9phant.

Esa página es incorrecta. JavaScript también usa UTF-8, ya que .NET lo hace de forma predeterminada. Inténtalo tú mismo:

javascript:alert(encodeURIComponent(''éléphant'')) %C3%A9l%C3%A9phant

Las URL de hoy son UTF-8. No intente usar cp1252 más. UTF-8 es tu amigo. Confíe en UTF-8!


Referencia:

js: %E9 l %E9 phant .net: %c3 %a9 l %c3 %a9 phant

La diferencia es que una es la UTF-8 URL UTF-8 mientras que la otra le proporciona la codificación URL ANSI .

En .NET, intente:

Dim a As String = System.Web.HttpUtility.UrlEncode( _ "éléphant", _ Text.Encoding.Default)

yo obtengo

%e9 l %e9 phant

como resultado. Eso coincide con la cadena que proporcionó para JavaScript, a excepción del caso Hex Character.


System.Web.HttpUtility.UrlEncode utilizará UTF8 (creo ...) como su codificador predeterminado, puede cambiar esto especificando uno ..

System.Web.HttpUtility.UrlEncode("éléphant", Encoding.Default); // %e9l%e9phant

Aunque puede ser preferible especificar una página de códigos real o no, en lugar de confiar en el sistema operativo predeterminado.


También puedes probar con base64 codificándolos.

Hay una publicación anterior que trata de hacerlo en JavaScript.

En cuanto a .NET, hay muchos ejemplos que muestran cómo hacerlo. Aquí hay uno que encontré en Google.

Por supuesto, las cadenas podrían ser un poco más grandes que urlencoding. Sin embargo, se ofuscarán, lo que puede ser una ventaja según la aplicación.