Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.NET内核中POST请求后UTF-8字符混乱_Javascript_C#_Asp.net_Asp.net Core_Post - Fatal编程技术网

Javascript ASP.NET内核中POST请求后UTF-8字符混乱

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

我正在使用ASP.NET核心MVC

我正在尝试使用FormData向控制器发出POST请求。但是,如果我将阿拉伯语字母放入FormData中发送给控制器,它会将其作为问号接收

我试着改变内容类型,但是什么也没有发送

以下是我发送POST请求的方式:

 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键,检查网络选项卡中请求的表单数据。请显示您在控制器中传递的数据和结果的屏幕截图。