【问题标题】:Incorrect characters at ModelBindingModelBinding 中的字符不正确
【发布时间】:2018-10-25 16:50:20
【问题描述】:

我有一个问题,我正在开发一个 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”。

您有什么建议可以解决这个问题吗?

【问题讨论】:

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


    【解决方案1】:

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

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

      &lt;globalization requestEncoding="utf-8" responseEncoding="utf-8"/&gt;

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

      &lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"/&gt;

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多