ASP - Установка кодовой страницы для преобразования строк
Установка кодовой страницы для преобразования строк
Кодовая страница представляет собой внутреннюю таблицу, которую операционная система использует для сопоставления символов (буквы, цифры и знаки пунктуации) с кодами символов. Разные кодовые страницы обеспечивают поддержку наборов символов, используемых в разных странах. Кодовые страницы указываются номером; например, кодовая страница 932 представляет японский набор символов, а кодовая страница 950 — один из китайских наборов символов.
ASP и поддерживаемые обработчики сценариев используют внутри себе Юникод, 16-битный стандарт перекодировки символов фиксированной ширины. Если все страницы написаны в кодовой странице, используемой сервером по умолчанию, ASP автоматически преобразует строки. Если сценарий был создан не в кодовой странице, используемой сервером по умолчанию, необходимо указать кодовую страницу, чтобы строки при передаче преобразовывались правильно:
- Между ASP и сценарием.
- Между обозревателем и сценарием.
- Между компонентами COM и сценарием.
Чтобы указать кодовую страницу для ASP-страницы, используйте директиву @ CODEPAGE. Например, чтобы установить кодовую страницу японского языка, используйте следующую директиву:
<%@ CODEPAGE = 932 %>
При обработке ASP содержимого и сценариев на этой странице указанная кодовая страница используется для преобразования из набора символов сценария в Юникод. Например, значение, указывающее на букву "a" в ANSI, будет преобразовано в другое значение, указывающее на букву "a" в Юникод.
ASP предполагает, что строки, передаваемые между веб-сервером и обозревателем или между сценарием и компонентами COM используют ту же кодовую страницу, которая установлена для сценария. Если необходимо указать другую кодовую страницу, можно установить значение свойства Session.CodePage, перекрывая установку CODEPAGE. Например, сценарий может быть написан в JIS, но должен получать ответ от пользователя, использующегоUTF-8 (две различные кодировки для стандартного японского набора символов).
Session.CodePage по умолчанию устанавливается в значение, указанное в директиве @ CODEPAGE; установка свойства перекрывает текущую установку CODEPAGE. Например, чтобы изменить кодовую страницу на один из китайских наборов символов, используйте следующую команду:
<% Session.CodePage = 950 %>
Если временно изменяется кодовая страница для фрагмента сценария, проверьте установку Session.CodePage снова в исходное значение. Приведенный ниже сценарий показывает временное изменение кодовой страницы:
<!-- Welcome to my home page in Japanese, code page 932 --!>
<%
@CodePage = 932
Session("OriginalCodePage") = Session.CodePage
<!-- Look up name in Chinese, code page 950 --!>
Session.CodePage = 950
Sender = ReadMailHeader("Sender")
Found = FindFriend("Sender")
<!-- Restore the original code page --!>
Session.CodePage = Session("OriginalCodePage")
If Found == TRUE
ReplyWithPersonalizedForm()
Else
ReplyWithBusinessForm()
%>