2

我有一个表单,它位于带有以下元标记的普通 .html 文件中:

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

我发布表单的服务要求数据采用 shift-jis 编码。当我通过使用 Chrome 打开此 .html 文件然后单击提交按钮来发布此表单时,服务可以接受它。当我检查 Fiddler 中的帖子值时,日文字符出现在服务的帖子中,如下所示:

goods_name_1 = "���i�P"

现在,当我采用完全相同的形式并将其放置在 ASP MVC 视图中时,将视图提供给 Chrome,其源代码与我在 .html 文件中的源相同,视图源看起来与打开的 .html 版本完全相同. 但问题是当我使用提交按钮发布表单时,发布值如下所示:

goods_name_1 = "商品一"

然后该服务会回复一个编码问题。

谁能建议可能出了什么问题?从 ASP MVC 提供的视图具有响应标头“Content-Type:text/html; charset=utf-8”。我不确定为什么帖子值与 .HTML 文件版本不同。有任何想法吗?

只是要补充一点,我拥有的 .html 文件在 Windows 中保存为 Unicode。

谢谢。

4

1 回答 1

1

在控制器中设置响应的 ContentEncoding:

public ActionResult MyAction() {
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("shift_jis");
    return View();
}

或在视图中:

@{
    ViewBag.Title = "Home Page";
    Response.ContentEncoding = System.Text.Encoding.GetEncoding("shift_jis");
}
于 2015-06-17T10:52:27.903 回答