Нужно ли делать что-то особенное для обработки нелатинских наборов символов в ASP.NET? - PullRequest
1 голос
/ 11 ноября 2009

Я получил следующий запрос от клиента:

Я провожу исследование наборы символов для будущих версий наши продукты.

Большинство сайтов, которые мы создали, используют HTML, включая метатег для iso-8859-1 - западноевропейский Латинский 1 алфавит, а не UTF-8 юникода.

Я настроил страницу, чтобы поиграть с этим, и обнаружил, что могу вставить различные скрипты для форматированного текста редактор: китайский, пенджабский, арабский, румынский и т. д., без проблем и они отображаются на веб-странице в порядке (в Firefox / IE8).

Я был немного удивлен, что моя страница правильно рендерил эти скрипты так как они не включены в латынь алфавит.

Читая дальше, я вижу, что это общее недопонимание того, что iso-8859-1 метатег) что нужно, это это не '

Как ', когда ваш браузер делает запрос к серверу говорит Сервер, что он хочет и может справиться. К тому времени браузер читает это код, mimetype уже установил набор символов. '

Так что кажется доступным персонажем набор определяется веб-сервером а не приложение / html.

Можете ли вы подтвердить, правильно ли это - IIS 6/7 поддерживает такой символ устанавливает, как вы настроили, и сделать Вы знаете о каких-либо проблемах с языки широко распространены в Великобритании быть представленным на нашем серверы? (Азиат, Восток / Запад Европы, арабский и т. д.).

Сервер клиента - Windows 2003 с параметрами региона и языка, настроенными как:

Вкладка региональных параметров -

Стандарты и форматы: United Kingdom
Расположение: United Kingdom

Вкладка «Языки» -

Текстовые сервисы и языки ввода - English (United Kingdom)

Вкладка «Дополнительно» -

Язык программ, не поддерживающих Юникод: English (United Kingdom)
Таблицы преобразования кодовых страниц: All checked (их довольно много: японский, корейский, арабский и т. Д.)

Нужно ли что-либо делать с конфигурацией сервера, или заказчик настраивает это через параметры в своем файле web.config и обеспечивает, чтобы любые поля базы данных, в которых могут храниться нелатинские символы, были настроены как юникод?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2009

ASP.NET обслуживает ответы в UTF-8, активированном по умолчанию.

Кодировка указана в заголовках ответов, поэтому не нужно делать ничего особенного. Однако вы можете добавить этот тег в заголовок страницы:

<meta http-equiv="Content-Type" content="text/html"; charset="utf-8">

Вы можете настроить это поведение в своем файле web.config:

<configuration>
  <system.web>
    <globalization
      fileEncoding="utf-8"
      requestEncoding="utf-8"
      responseEncoding="utf-8"
      culture="en-US"
      uiCulture="de-DE"
    />
  </system.web>
</configuration>

Читать здесь: Как: выбрать кодировку для глобализации веб-страницы ASP.NET

Что касается полей базы данных, если мы говорим о SQL Server, поля должны быть n varchar и n char, а не varchar / char.

1 голос
/ 12 ноября 2009

Согласен с ответом от "Art Art" (и проголосовал).

В этом случае странно, что все работает, даже если в мета явно указано iso-8859-1 (не должно).

Наиболее вероятное объяснение состоит в том, что веб-сервер настроен на отчет utf-8 в заголовке HTTP-ответа Content-Type, который переопределяет мета (согласно стандарту).

Или, что браузер обнаруживает кодировку и игнорирует мета (IE имеет тенденцию делать это, если текста достаточно для надежного обнаружения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...