2012-05-13 2 views
5

Попытка сделать мою первую страницу ASP.NET. Получил IIS 5.1 в XP, настроенный на запуск .NET 4. Создал новый виртуальный каталог и добавил файл .aspx. Когда я просматриваю файл, символы, отличные от ASCII, повреждены. Например, ü (U + 00FC) преобразуется в ü (U + 00C3 U + 00BC), что эквивалентно I-не-get-this-is-UTF-8.Нужен ли мне web.config для символов, отличных от ASCII?

Я пробовал различные способы воспользовавшись этим:

  1. Я убедился, что .aspx файл действительно кодируется как UTF-8.
  2. Я поставил мета-тег:

    <meta charset="UTF-8">

  3. Я установил виртуальный каталог для обработки .aspx, как text/html;charset=utf-8 под HTTP Headers> Тип файла в IIS.

  4. Я добавил ResponseEncoding="utf-8" по номеру <%@ Page ... %>.
  5. Я вставил строку в HttpUtility.HtmlEncoded(). Теперь ü был преобразован в Ã ¼ (U + 00C3 U + 00BC).

Наконец, я нашел 2 способа, которые работали:

  1. Замена не-ASCII символы с символьных ссылок, таких как &#252; Это было хорошо в 90-х годах, не сегодня.
  2. Добавление файла web.config в виртуальный каталог, с этим содержимым:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <system.web> 
        <globalization fileEncoding="utf-8"/> 
        </system.web> 
    </configuration> 
    

Без fileEncoding настройки, анализатор ASP.NET будет читать .aspx и коррумпированной каждый не-ASCII символов не пытаясь вывести кодировку файла. Разве это то, чему вы, профессионалы, научились жить, или я чего-то не хватает? Является файлом web.config с настройками глобализации способ обработки «международных» символов на страницах .aspx? Я не помню, что у меня были подобные проблемы с PHP, поэтому я озадачен, почему это связано с ASP.NET.

+0

я нашел еще один способ заставить его работать без файла web.config: Сохранить страницу .aspx как UTF-8 с байтовой меткой (BOM). В общем, UTF-8 не нуждается в спецификации, поскольку порядок байтов неявна в кодировке, но Microsoft имеет традицию требовать его, что, вероятно, правильно, поскольку оно делает вывод о кодировке файла более надежный. Я предполагаю, что это то решение, которое я искал, но комментарии по-прежнему приветствуются. –

+0

Вы должны рассмотреть возможность установки установщика Microsoft Web-платформы и использования IIS express 7.5 и веб-матрицы или VS 2010 express – Aviatrix

ответ

3

Для использования символов, отличных от ASCII, необходимо иметь две вещи. Сохранение файлов с помощью UTF-8, выбрав эту кодировку для файлов и убедитесь, что у вас есть эти настройки на вашем web.config

<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" /> 

Заметим, что всегда есть web.config на ASP.NET , Существует глобальный, который также имеет эти настройки и живет в каталоге asp.net {drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\, а затем web.config в вашем проекте. Иногда глобальный устанавливает кодировку из текущей страны. В этом случае вам нужно вернуть его в UTF-8 в своем проекте.

Вы нашли все, что уже, я просто указать на 3 настройки:

  1. Сохраните файлы с юникода.
  2. Установите requestEncoding = "UTF-8"
  3. Установите responseEncoding = "UTF-8"
+0

, это не сработало. после того, как я добавил fileEncoding, он сработал.

+0

@ blackholeearth0_gmail Хорошо, я обновлю свой ответ – Aristos

Смежные вопросы