Javascript ASP.NET内核中POST请求后UTF-8字符混乱
我正在使用ASP.NET核心MVC 我正在尝试使用FormData向控制器发出POST请求。但是,如果我将阿拉伯语字母放入FormData中发送给控制器,它会将其作为问号接收 我试着改变内容类型,但是什么也没有发送 以下是我发送POST请求的方式:Javascript ASP.NET内核中POST请求后UTF-8字符混乱,javascript,c#,asp.net,asp.net-core,post,Javascript,C#,Asp.net,Asp.net Core,Post,我正在使用ASP.NET核心MVC 我正在尝试使用FormData向控制器发出POST请求。但是,如果我将阿拉伯语字母放入FormData中发送给控制器,它会将其作为问号接收 我试着改变内容类型,但是什么也没有发送 以下是我发送POST请求的方式: const xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (this.readyState == 4 && th
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
window.location.href = 'Categories';
}
}
xhr.open("POST", 'http://localhost:52320/api/Categories/Add', true);
const fd = new FormData();
fd.append('CatName', txtCatName.value);
fd.append('FileName', uploadFileName);
xhr.send(fd);
这是我在控制器中接收信息的方式:
[Route("api/[controller]")]
public class CategoriesController : Controller {
[Route("Add")]
[HttpPost]
public IActionResult Add(FormData formData)
{
if (formData != null && ModelState.IsValid)
{
DataManager.Instance.AddCategory(formData.CatName, formData.FileName);
return Ok();
}
return BadRequest();
}
}
public class FormData
{
public string CatName { get; set; }
public string FileName { get; set; }
}
解决了
实际上,问题是插入SQL。我认为这足以使列NVARCHAR,但显然我必须在字符串之前使用N
感谢评论中的每个人帮助我!这很有用。可能是浏览器问题,您可以签入开发工具,以FormData的形式发送到服务器的内容始终使用UTF-8 encodig,也可能是ASP.NET配置问题。检查这是否有帮助:“它以问号的形式接收”-您如何验证这一点?您需要确保为您显示数据的内容也正确理解编码,并且能够向您显示这些字符。例如,VisualStudio调试器可能会向您显示正确的值;您打印到的控制台可能不会。“但是,如果我在FormData中放入阿拉伯字母发送给控制器,它会将其作为问号接收。”我测试了您的代码,但没有得到您所说的结果,它工作得很好。按google chrome中的F12键,检查网络选项卡中请求的表单数据。请显示您在控制器中传递的数据和结果的屏幕截图。