Кодовая страница 65001 и utf-8 - это одно и то же? - PullRequest
42 голосов
/ 27 октября 2009
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conn.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Правильно ли указан код выше?

Ответы [ 4 ]

46 голосов
/ 27 октября 2009

Да.

UTF-8 - это CP65001 в Windows (это просто способ указать UTF-8 в устаревшей кодовой странице). Насколько я понимаю, ASP может обрабатывать UTF-8, если указан таким образом.

9 голосов
/ 27 октября 2009

Ваш код правильный, хотя я предпочитаю устанавливать CharSet в коде, а не использовать метатег: -

<% Response.CharSet = "UTF-8" %>

Кодовая страница 65001 относится к набору символов UTF-8. Вы должны быть уверены, что ваша страница asp (и любые включенные) сохранены как UTF-8, если они содержат какие-либо символы вне стандартного набора символов ASCII.

Указывая атрибут CODEPAGE в блоке <% @, вы указываете, что все, что написано с использованием Response.Write, должно быть закодировано в указанную кодовую страницу, в данном случае 65001 (utf-8). Следует иметь в виду, что это не влияет на статическое содержимое, которое передается в байтах дословно в ответ. Следовательно, причина, по которой файл должен быть фактически сохранен с использованием указанной кодовой страницы. </p>

Свойство CharSet ответа устанавливает значение CharSet заголовка Content-Type. Это не влияет на то, как контент может быть закодирован, он просто сообщает клиенту, какая кодировка принимается. Опять же, важно, чтобы его значение соответствовало фактической отправленной кодировке.

3 голосов
/ 27 октября 2009

Да, 65001 - это идентификатор кодовой страницы Windows для UTF-8, как описано на веб-сайте Microsoft . Википедия предполагает , что кодовая страница IBM 128 и кодовая страница SAP 4110 также являются индикаторами для UTF-8.

1 голос
/ 03 апреля 2011
response.codepage = 65001

, кажется, дает плохой результат, когда физический файл сохраняется как utf-8

В противном случае он работает так, как положено.

...