我正在开展一个非常大的企业项目。它是一个C#,.NET Entity Framework站点,后面有一个Microsoft SQL服务器。
我正在测试的输入位于如下形式:
@using (Html.BeginForm("CreateAgency", "Agency", FormMethod.Post, new { enctype = "multipart/form-data", accept_charset = "utf-8" }))
{
...
<li>
<label id="lblAgency" class="AgencyEditorPanelItemsLabel">Agency Name</label>
@Html.TextBoxFor(m => m.AgencyName, new { @class="newAgencyTextInput"})
</li>
...
这可以追溯到AgencyController,在那里它被解析:
NameValueCollection nvc = HttpUtility.ParseQueryString(String.Empty);
nvc.Add("AgencyName", agency.AgencyName);
...
然后它被打包成一个字符串,用于通过API发布:
//make the post object readily convertable to a string
StringBuilder sb = new StringBuilder();
sb.Append(nvc.ToString());
//encode collection for pending transmission
var data = Encoding.UTF8.GetBytes(sb.ToString());
我所展示的代码中是否有任何内容会导致UTF-8字符变为“%u00a5%u00b7%u00a3%u00b7%u20ac%u00b7 $%u00b7%u00a2%u00b7%u20a1%u00b7%u20a2 %u00b7%u20a3“?我甚至试过在我的webconfig中添加一个全球化密钥,如下所示:
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" />
但那没有做任何事。有没有人有一些我可以尝试解决这个问题的提示或想法?
非常感谢您的帮助!
答案 0 :(得分:0)
为了其他有类似问题的人的利益,事实证明服务器使用%s将其编码为URI。由于我们不需要该功能,因此我将以下内容添加到web.config文件中:
<appSettings>
<add key="aspnet:DontUsePercentUUrlEncoding" value="true" />
这会停止自动网址编码,因此如果您需要该功能,请不要忘记手动编码需要它的网址。