После того, как Microsoft запустила .NET и провела широкомасштабное продвижение и популяризацию, ASP.NET постепенно вошла в основное русло разработки информационных систем. Но в то же время старая система, разработанная с использованием ASP, сталкивается с проблемой интеграции: когда ASP и ASP.NET интегрированы друг с другом, информация китайских файлов cookie не может быть передана друг другу. использование ASP.NET для записи. После прочтения информации китайских файлов cookie с помощью ASP вместо китайских символов были прочитаны искаженные символы.
Позже, после поиска информации и постоянной практики, я, наконец, нашел основную причину проблемы. Причина, по которой информация китайских файлов cookie не может быть правильно прочитана в ASP, заключается в том, что ее китайский формат кодирования отличается.
Файл конфигурации Web.config проекта разработки содержит следующую информацию:
Из этого видно, что без специальной настройки проекта информация китайских COOKIES в системе передается методом кодирования «utf-8». по умолчанию, а информация китайских файлов cookie в ASP по умолчанию передается с помощью метода кодирования «GB2312», поэтому информация китайских файлов cookie между ASP и ASP.NET не может передаваться друг другу по умолчанию, но ее можно решить с помощью следующие методы:
Используйте следующий метод для записи COOKIE:
'----------------------------------------- -------- -----------------------
' Имя: WriteCookie(ByVal strCookieName как строка, ByVal strKeyName как строка, ByVal strKeyValue как строка)
'Параметры:
'[ByVal] strCookieName — имя файла cookie
' [ByVal] strKeyName - имя ключа
'[ByVal] strKeyValue — значение ключа.
' Возврат: строка
'------------------------------------------------ - --------------
Открытая функция WriteCookie (ByVal strCookieName As String, ByVal strKeyName As String, ByVal strKeyValue As String) As 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
Конечная функция.
Вышеописанный метод позволяет ASP правильно читать информацию о китайских файлах cookie, записанных ASP.NET, но в то же время, если информация о китайских файлах cookie, считанная в ASP.NET, отображается непосредственно на стойке регистрации, она будет отображаться как искаженная. Это так. Поскольку ASP.NET использует кодировку «utf-8» для отображения информации на китайском языке в кодировке «GB2312», возникает проблема. Для правильного отображения информации на китайском языке на первой странице можно использовать следующий метод:
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)
Приведенный выше метод решает проблему, связанную с невозможностью совместного использования информации китайских файлов cookie между ASP и ASP.NET. Однако мне интересно, можно ли ее изменить, изменив метод кодирования в файле. Файл конфигурации Web.config. Изменение метода кодирования «utf-8» на метод кодирования «GB2312» может решить вышеуказанную проблему. Вы можете попробовать и сообщить мне результат.
В ASP.NET мы обычно очищаем информацию COOKIES с помощью следующих методов:
Sub CleanCookies().
Тусклый я как целое число
Тусклый файл cookie как System.Web.HttpCookie
Для i = 0 To System.Web.HttpContext.Current.Request.Cookies.Count - 1
cookie = System.Web.HttpContext.Current.Request.Cookies(i)
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Value = ""
System.Web.HttpContext.Current.Response.Cookies(CStr(cookie.Name)).Expires = DateAdd(DateInterval.Day, -1, Now)
Следующий
End Sub
Но когда вы очистите информацию COOKIES с помощью вышеуказанного метода и снова войдете в систему, ASP не сможет прочитать COOKIES ASP.NET. Однако добавление следующего оператора к вышеуказанному методу очистки COOKIES. информация может решить проблему невозможности правильной очистки информации COOKIES. Вопрос:
System.Web.HttpContext.Current.Response.Cookies.Clear()
Выше приведено краткое изложение некоторых моих опытов на работе. Могут быть неточности. .Надеюсь, вы меня поправите!