IIS интегрированный режим иностранных символов

Итак, это сводит нас с ума. У нас есть приложение, встроенное в ASP.NET 4.0, работающее на Windows Server 2012 и IIS8.

Несколько страниц нашего сайта переведены на несколько языков, особенно японский и китайский - проблемные.

Если перевести пул приложений в интегрированный режим - некоторые символы отображаются некорректно. Нас встречают с маленькими вопросительными знаками.

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

Забавная вещь - если мы изменим настройку "Включить 32-битные приложения" в "Пулы приложений" -> "Дополнительные настройки", на страницах по-прежнему будут отображаться поддельные символы, однако они неправильно отображают различные символы.

Первоначально мы подозревали поддельный символ на странице или проблему с кодировкой - но мы все четыре раза проверили и убедились, что все содержимое - это utf-8. Переключение на 32-разрядный пул приложений и неправильное отображение разных символов приводит меня к мысли, что в IIS что-то не так.

Заранее спасибо за любую помощь / понимание / опыт.

1 ответ

Это двухстороннее:

С https://technet.microsoft.com/en-us/library/cc753449%28v=ws.10%29.aspx

"В IIS 7 пулы приложений работают в одном из двух режимов: интегрированный режим и классический режим. Режим пула приложений влияет на то, как сервер обрабатывает запросы на управляемый код. Если управляемое приложение запускается в пуле приложений с интегрированным режимом, сервер будет Для обработки запроса используйте интегрированные конвейеры обработки запросов IIS и ASP.NET, однако если управляемое приложение запускается в пуле приложений в классическом режиме, сервер продолжит направлять запросы для управляемого кода через Aspnet_isapi.dll, обрабатывая запрашивает так же, как если бы приложение работало в IIS 6.0. "

https://forums.iis.net/p/1173138/1962242.aspx

У некоторых людей с похожими проблемами было несколько исправлений, заставляющих IIS 7 обрабатывать наборы символов так, как они хотели. Суть в том, что классический /IIS 6 принимает кодировку, которую вы хотите иметь, но где-то в интегрированном конвейере /IIS 7 использует кодировку по умолчанию.

Это говорит о том, как установить кодировку так, как вы хотите: https://stackoverflow.com/questions/9781157/how-to-set-iis-websites-default-encoding

Вы, вероятно, захотите использовать fiddler / firebug, чтобы увидеть, как это происходит (utf8, когда это должен быть ISO-8859-1 или наоборот).

И последнее, но не менее важное, настоящий трактат о том, как ASP.Net решает проблемы глобализации: https://support.microsoft.com/en-us/kb/893663. Предназначен для 2.0, но по моему опыту многие подобные вещи переносятся в более поздние версии и, вероятно, применимы к 4.0.

Другие вопросы по тегам