ModelBinding中的字符不正确

时间:2009-11-09 11:52:24

标签: asp.net-mvc character-encoding turkish

我有一个问题我正在开发一个asp.net mvc项目。网站使用土耳其语。当我将这个网站发布到IIS时,土耳其字符在网页上变得疯狂,所以我将web.config中的全球化设置为

<globalization fileEncoding="iso-8859-9" requestEncoding="iso-8859-9" responseEncoding="iso-8859-9"/>

此土耳其字符显示正确后。

但是现在我有另一个问题,当我输入土耳其文本到输入文本然后POST到我的控制器动作时,土耳其字符再次变得疯狂。

我正确地跟踪了http消息土耳其语文本POST 例如:如果我输入“Yücel”(ü是土耳其字符)输入,我看向HttpAnalyzer我可以看到Post Data是“Yücel”。当我查看由MVC自动绑定的动作参数的属性时,我看到“Yücel”。

您是否有任何建议来解决此问题?

2 个答案:

答案 0 :(得分:2)

我解决了问题,我做的是,

  1. web.config删除以下元素,以便使用默认编码(UTF-8)

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

  2. 从我的Site.Master中删除以下内容

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"/>

答案 1 :(得分:1)

在web.config中的requestEncoding值;

<globalization requestEncoding="utf-8" ...

必须与网页字符集值相同;

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

但是您也可以通过在web.config位置标记设置中的页面地址设置来执行其他请求编码过程。 样本:

<configuration>
...
<location path="path/to/your/actionmethod">
    <system.web>
        <globalization requestEncoding="ISO-8859-9" responseEncoding="ISO-8859-9" />
    </system.web>
</location>
...
</configuration>

http://www.siimviikman.com/2012/06/12/action-based-request-encoding-in-asp-net-mvc/