Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 16009|Respuesta: 2

[ASP.NET] Codificación y decodificación de URL en ASP.NET

[Copiar enlace]
Publicado en 12/1/2016 13:04:21 | | | |

Echemos un vistazo a las siguientes dos URLs, ¿cumplen los mismos parámetros?
aaa.aspx?tag=.net%BC%BC%CA%F5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Parece diferente, pero en realidad todos usan UrlEncode para "tecnología .net", aunque uno es codificación GB2312 y el otro es Utf-8.
El siguiente código puede obtener el efecto de codificación anterior:

cadena tmp1 = System.Web.HttpUtility.UrlEncode ("tecnología .net", System.Text.Encoding.GetEncoding("GB2312"));
cadena tmp2 = System.Web.HttpUtility.UrlEncode(".net technology", System.Text.Encoding.UTF8);

Nuestras páginas web pueden ser llamadas por otros programas.
Por ejemplo, en una página de ASP simplificada en chino en el sistema operativo necesita pasar un parámetro chino a una página ASP.net.
Por defecto, en sistemas operativos chinos simplificados, el método Server.UrlEncode de ASP codificará chino con codificación GB2312.
Pero por defecto, ASP.net páginas están codificadas en UTF-8.
En este caso, cuando usas Request.QueryString["Tag"] para aceptar el valor, no podrás aceptar información china y verás caracteres distorsionados en la depuración paso a paso.
Por ahora, aunque Request.QueryString["Tag"] se acepta con caracteres distorsionados, la URL en este momento no está distorsionada.

La solución es analizar tú mismo los parámetros de la URL y luego descifrar los valores de los parámetros según la codificación de GB2312, en lugar de usar la codificación UTF-8 predeterminada de .net.
De hecho, Microsoft también proporciona funciones correspondientes, así que no tenemos que usar expresiones regulares para analizar las cadenas de URL nosotros mismos.

El código de la demo es el siguiente:

cadena q = Request.Url.Query;

System.Collections.Specialized.NameValueCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding("GB2312"));
Respuesta.Escribir(nv["Etiqueta"]);

Usemos el .NET Reflector de Lutz Roeder para analizar la implementación del método System.Web.HttpUtility.ParseQueryString:
Si seguimos comprobando, podemos ver que el código que finalmente gestiona el análisis de cadenas de parámetros URL es el siguiente:

La siguiente función de la clase System.Web.HttpValueCollection implementa el análisis del parámetro URL
Aquí vemos que es un análisis realizado por cada personaje.



En cuanto al tipo de método de codificación que nos pasa la otra parte, lo mejor es pasarlo como parámetro, para poder descifrarlo según este parámetro del usuario.




Anterior:¿Voy a decorar mi casa para convertirla en un estudio para trabajar?
Próximo:AssemblyInfo.cs la explicación específica de los parámetros del archivo
 Propietario| Publicado en 4/12/2024 17:15:50 |
Codificación y decodificación de URLs .NET Core

 Propietario| Publicado en 4/12/2024 17:35:32 |
Los diferentes conjuntos de caracteres se codifican de la siguiente manera:



Código:



Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com