代码之家  ›  专栏  ›  技术社区  ›  Yucel

模型绑定处的字符不正确

  •  4
  • Yucel  · 技术社区  · 15 年前

    我在开发ASP.NET MVC项目时遇到问题。网站是土耳其语。当我将此网站发布到IIS时,土耳其字符在网页中变得疯狂,因此我将web.config中的全球化设置为

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

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

    但现在我有另一个问题,当我输入土耳其语文本到输入文本,然后发布到我的控制器操作,土耳其语字符再次疯狂。

    我正确地跟踪了HTTP消息土耳其文本帖子 例如:如果我输入“y_¼cel”(_¼是土耳其语字符),我会查看httpanalyzer,我可以看到post数据是“y_¼cel”。当我查看由MVC自动绑定的操作参数属性时,我会看到“Y__¼cel”。

    你有什么建议来解决这个问题吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Hakan Fıstık MuriloKunze    8 年前

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

    1. 从中删除以下元素 web.config 因此将使用默认编码(UTF-8)

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

    2. 从我的网站删除以下内容。母版

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

        2
  •  1
  •   ishakkulekci    6 年前

    在web.config requestencoding值中;

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

    必须与网页中的charset值相同;

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

    但您也可以在web.config位置标记设置中按页面地址设置执行其他请求编码过程。 Sample:

    <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/