IIS集成模式的外来字符

好,所以这一直使我们疯狂。 我们有一个运行在Windows Server 2012和IIS8上的ASP.NET 4.0应用程序。

我们网站的几页翻译成多种语言,特别是日语和中文是有问题的。

如果我们将应用程序池设为集成模式 – 某些字符无法正确显示。 我们用小问号迎接。

如果我们把应用程序池放在经典模式下,所有的字符都能正确显示。 不幸的是,这不是我们的长期select,因为它破坏了网站上的其他function。

有趣的是,如果我们在“应用程序池” – >“高级设置”中更改“启用32位应用程序”设置,页面仍然显示虚假字符,但是它们显示不正确的字符。

最初我们怀疑是页面中的一个假字符或编码问题 – 但是我们已经四次检查了所有内容,并validation了所有的内容是utf-8。 切换到32位的应用程序池,看到不同的字符显示不正确导致我想,也许在IIS中有什么错误。

提前感谢任何帮助/见解/经验。

这是一个双亲:

https://technet.microsoft.com/zh-CN/library/cc753449%28v=ws.10%29.aspx

在IIS 7中,应用程序池运行在两种模式之一:集成模式和经典模式。应用程序池模式影响服务器如何处理托pipe代码的请求。如果托pipe应用程序在集成模式的应用程序池中运行,服务器将使用IIS和ASP.NET的集成请求处理pipe道来处理请求,但是如果托pipe应用程序运行在具有经典模式的应用程序池中,则服务器将继续通过Aspnet_isapi.dll路由对托pipe代码的请求,处理请求与在IIS 6.0中运行该应用程序一样。“

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

一些有类似问题的人有一些解决方法强制IIS 7按照他们想要的方式处理字符集。 它的要点是,经典/ IIS 6接受你想要的编码,但在集成pipe道的某处/ IIS 7正在使用其默认编码。

这将介绍如何设置您想要的编码方式: https : //stackoverflow.com/questions/9781157/how-to-set-iis-websites-default-encoding

你可能想要弄清楚/萤火虫的东西,看它是怎么回事(utf8何时应该是ISO-8859-1,反之亦然)。

最后但并非最不重要的,关于ASP.Net如何处理全球化问题的一个真正的论述: https : //support.microsoft.com/en-us/kb/893663 。 是为2.0,但在我的经验,像这样的东西很多延续到后来的版本,可能适用于4.0。