Мета-заголовок Content-Type информирует браузер о том, что контент следует отправлять как поток текста в кодировке UTF-8. Это не гарантирует, что отправленный поток на самом деле является UTF-8. Для правильной работы с UTF-8 вам нужно сделать 3 вещи: -
- Убедитесь, что статический контент сохранен в кодировке, совместимой с UTF-8.
- Убедитесь, что ваш динамический контент закодирован в UTF-8.
- Сообщите клиенту, что содержимое имеет кодировку UTF-8.
Элемент 1 требует либо фактического сохранения файла ASP в виде файла в кодировке UTF-8, либо чтобы все ваше статическое содержимое в файле находилось в диапазоне символов ASCII (0-127). Обратите внимание, что если вы сохраняете как UTF-8, тогда весь ваш серверный скрипт должен использовать символы в пределах диапазона символов ASCII. В Visual Studio вы можете сделать это, сохранив файл AS ..., а затем щелкнув маленькую стрелку на кнопке Сохранить.
Элемент 2 требует, чтобы свойство Response.CodePage
было установлено на кодовую страницу UTF-8 65001, это можно сделать в коде или добавив атрибут CODEPAGE=65001
в объявления <%@ %>
в первая строка файла ASP. Если вы делаете это в коде, вы должны установить его перед любыми вызовами на Response.Write
.
И: не используйте функции chr или asc (они ошибочны при использовании 65001), но вместо этого используйте chrw и ascw.
Элемент 3 требует, чтобы заголовок Content-Type
содержал квалификатор charset=UTF-8
. Как вы уже делаете, вы можете сделать это с помощью заголовка META. Лично я считаю, что это немного клудж, я предпочитаю использовать Response.Charset = "UTF-8"
в коде. Это помещает квалификатор в истинный заголовок HTTP Content-Type
.