ajax - 以ajax形式编码特殊字符(asp mvc)

标签 ajax asp.net-mvc

我有一个使用 html 帮助器创建的 ajax 表单:@using (Ajax.BeginForm(...))

问题是,当我发布一些字符(如 ñ、€ 等)时, Controller 接收到这些字符时,它们会被编码为 ñ -> ñ, €-> â。

我的 Web.config 中已包含此部分:

<globalization enableClientBasedCulture="true" uiCulture="auto" culture="auto" fileEncoding="iso-8859-15" requestEncoding="iso-8859-15" responseEncoding="iso-8859-15" />

解决了之前在 url 中传递特殊字符时的编码问题。

如何解决此问题,以便我可以在 Controller 中接收该字符?

提前致谢

最佳答案

问题是 AJAX 使用 UTF-8发送请求时的编码。但您已将服务器配置为期望 requestEncoding="iso-8859-15"这就是差异的来源。

假设您有一个名为 Category 的输入字段在您的表单中,用户输入 ñ其中的人物。如果使用普通的Html.BeginForm以下 POST 请求负载将被发送到服务器:

Category=%F1

另一方面,如果您使用 Ajax.BeginForm ,以下请求 POST 负载将被发送到服务器:

Category=%C3%B1&X-Requested-With=XMLHttpRequest

在这种情况下,服务器无法正确解码此 UTF-8 编码请求,因为它预计请求为 iso-8859-15编码。

因此,您可以修改 web.config 以对站点使用 UTF-8 请求和响应编码。在 2012 年想不出在 Web 应用程序中使用 UTF-8 以外的任何其他编码的正当理由。

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto" 
    culture="auto" 
    fileEncoding="utf-8" 
    requestEncoding="utf-8" 
    responseEncoding="utf-8" 
/>

另外,不要忘记更新任何 <meta>您的布局中可能有的标签,以便使用 UTF-8还有:

<meta charset="utf-8" />

关于ajax - 以ajax形式编码特殊字符(asp mvc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761652/

相关文章:

asp.net-mvc - Ninject 注册每个请求

asp.net-mvc - Visual Studio ASP.NET Web 部署 - 每个引用自定义库的页面都会给出错误 404

php - 如何通过 jQuery 将 PHP 文件加载到 DIV 中?

php - 无法通过 AJAX 调用在 php 中创建 session

javascript - 如何销毁数据表的第一次初始化(模态内的数据表)

c# - DELETE 语句冲突(ASP.NET MVC)

javascript - CSS- jQuery - 将一个 div 向左滚动,同时将另一个 div 扩展到宽度 100%

asp.net-mvc - 默认情况下 ASP.NET MVC 4 是否需要额外的 XSS 处理

java - 如何在 richfaces 4 切换面板中执行下一页(与展示不同)?

JavaScript - AJAX 数据请求如何出现在 url 中?