Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 16009|Resposta: 2

[ASP.NET] Codificação e decodificação de URL em ASP.NET

[Copiar link]
Publicado em 12/01/2016 13:04:21 | | | |

Vamos dar uma olhada nas duas URLs a seguir, elas atendem aos mesmos parâmetros?
aaa.aspx?tag=.net%BC%BC%CA%F5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

Parece ser diferente, mas na verdade, todos usam UrlEncode para "tecnologia .net", mas um é codificação GB2312 e o outro é codificação Utf-8.
O código a seguir pode obter o efeito de codificação acima:

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

Nossas páginas reais podem ser chamadas por outros programas.
Por exemplo, se uma página ASP no sistema operacional Simplificada em chinês precisa passar um parâmetro chinês para uma página ASP.net.
Por padrão, em sistemas operacionais simplificados chineses, o método Server.UrlEncode do ASP codifica chinês com codificação GB2312.
Mas, por padrão, ASP.net páginas são codificadas em UTF-8.
Nesse caso, quando você usa Request.QueryString["Tag"] para aceitar o valor, você não poderá aceitar informações em chinês, e verá caracteres distorcidos na depuração passo a passo.
Neste momento, embora Request.QueryString["Tag"] seja aceito com caracteres distorcidos, a URL neste momento não está distorcida.

A solução é analisar os parâmetros na URL por conta própria e então decifrar os valores dos parâmetros de acordo com a codificação do GB2312, em vez de usar a codificação padrão UTF-8 do .net.
Na verdade, a Microsoft também fornece funções correspondentes, então não precisamos usar expressões regulares para analisar cadeias de URL por conta própria.

O código da demonstração é o seguinte:

string q = Request.Url.Query;

System.Collections.Specialized.NameValueCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding("GB2312"));
Resposta.Escrever(nv["Tag"]);

Vamos usar o .NET Reflector do Lutz Roeder para analisar a implementação do método System.Web.HttpUtility.ParseQueryString:
Se continuarmos voltando, podemos ver que o código que finalmente gerencia a análise de string de parâmetros de URL é o seguinte:

A seguinte função da classe System.Web.HttpValueCollection implementa a análise do parâmetro URL
Aqui vemos que é uma análise realizada por cada personagem.



Quanto ao tipo de método de codificação que a outra parte nos passa, o melhor é passá-lo como parâmetro, para que possamos descriptografá-lo de acordo com esse parâmetro do usuário.




Anterior:Vou decorar minha casa para transformar um estúdio para trabalhar?
Próximo:AssemblyInfo.cs a explicação específica dos parâmetros do arquivo
 Senhorio| Publicado em 04/12/2024 17:15:50 |
Codificação e decodificação de URL do .NET Core

 Senhorio| Publicado em 04/12/2024 17:35:32 |
Os diferentes conjuntos de caracteres são codificados da seguinte forma:



Código:



Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com