Depois que a Microsoft lançou o .NET e realizou promoção e popularização em larga escala, o ASP.NET gradualmente entrou no mainstream do desenvolvimento de sistemas de informação. Mas, ao mesmo tempo, o antigo sistema desenvolvido com ASP enfrenta a integração. Neste momento, ele enfrenta um problema: quando o ASP e o ASP.NET são integrados, as informações dos COOKIES chineses não podem ser compartilhadas entre si. usando ASP.NET para escrever Depois de ler as informações dos COOKIES em chinês usando ASP, o que foi lido foram caracteres distorcidos em vez de chineses.
Mais tarde, depois de procurar informações e praticar constantemente, finalmente encontrei a causa raiz do problema. A razão pela qual as informações dos COOKIES chineses não podem ser lidas corretamente no ASP é que seu formato de codificação chinês é diferente.
O arquivo de configuração Web.config do projeto de desenvolvimento contém as seguintes informações:
<!-- Globalização Esta seção define as configurações de globalização do aplicativo. -->
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
Pode-se observar a partir disso que sem configuração especial do projeto, as informações dos COOKIES chineses no sistema são transmitidas através do método de codificação "utf-8" por padrão, e as informações de COOKIES chineses no ASP são transmitidas por meio do método de codificação "GB2312" por padrão, portanto, as informações de COOKIES chineses entre ASP e ASP.NET não podem ser compartilhadas entre si por padrão, mas podem ser resolvidas pelo seguintes métodos:
Use o seguinte método para escrever COOKIE:
'----------------------------------------- -------- -----------------------
'Nome: WriteCookie(ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String)
'Parâmetros:
'[ByVal] strCookieName - nome do cookie
' [ByVal] strKeyName - nome da chave
'[ByVal] strKeyValue - valor chave.
'Retorno: String
'------------------------------------------------ - --------------
Função pública WriteCookie (ByVal strCookieName como string, ByVal strKeyName como string, ByVal strKeyValue como string) como string
Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
strKeyValue = System.Web.HttpUtility.UrlEncode(strKeyValue, objEnc)
System.Web.HttpContext.Current.Response.Cookies(strCookieName)(strKeyName) = strKeyValue
Função final
O método acima permite que o ASP leia corretamente as informações de COOKIES em chinês escritas pelo ASP.NET, mas, ao mesmo tempo, se as informações de COOKIES em chinês lidas no ASP.NET forem exibidas diretamente na recepção, elas serão exibidas como ilegíveis caracteres. Isso ocorre porque o ASP.NET usa a codificação "utf-8" para exibir informações em chinês na codificação "GB2312", ocorre um problema. Você pode usar o seguinte método para exibir corretamente as informações em chinês na primeira página:
Dim uName As String =. System.Web.HttpContext.Current.Server.UrlDecode(System.Web.HttpContext.Current.Request.Cookies(strCookieName)(strKeyName))
Dim objEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")
uName = System.Web.HttpUtility.UrlDecode(uName, objEnc)
O método acima resolve o problema de que as informações dos COOKIES chineses não podem ser compartilhadas entre ASP e ASP.NET. No entanto, gostaria de saber se elas podem ser modificadas modificando o método de codificação no. Arquivo de configuração Web.config., alterar o método de codificação "utf-8" para o método de codificação "GB2312" pode resolver o problema acima. Você pode tentar e me dizer o resultado.
No ASP.NET geralmente limpamos as informações de COOKIES através dos seguintes métodos:
Sub CleanCookies()
Dim i como inteiro
Dim cookie como System.Web.HttpCookie
Para i = 0 Para System.Web.HttpContext.Current.Request.Cookies.Count - 1
cookie = System.Web.HttpContext.Current.Request.Cookies(i)
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Nome)).Value = ""
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Expires = DateAdd(DateInterval.Day, -1, Agora)
Próximo
End Sub
Mas quando você limpa as informações de COOKIES através do método acima e faz login novamente, o ASP não será capaz de ler os COOKIES do ASP.NET. No entanto, adicionar a seguinte instrução ao método acima de limpeza de COOKIES. informações podem resolver o problema de não conseguir limpar corretamente as informações dos COOKIES Pergunta:
System.Web.HttpContext.Current.Response.Cookies.Clear()
O texto acima é um resumo de algumas de minhas experiências no trabalho. .Espero que você me corrija!