Asp.net 设置Request.ContentEncoding

Asp.net 设置Request.ContentEncoding,asp.net,globalization,content-encoding,Asp.net,Globalization,Content Encoding,我有一个支持多种语言的页面(用户可以随时更改语言)。 我根据初始化区域性方法中的用户选择更新线程的区域性 我还根据所选国家/地区的代码页更新响应对象,并将其字符集设置为所用编码的WebName(如果我不根据代码页更新响应对象,则绑定到控件的数据将被篡改)。资源文件也基于代码页进行本地化 完成上述更改后,页面将在浏览器中正确显示 然而,当用户以一种亚洲语言输入数据时,文本就会变得一团糟。下拉列表实际上抛出无效回调或回发参数异常 在检查request.contentEncoding时,我发现它仍然是

我有一个支持多种语言的页面(用户可以随时更改语言)。
我根据初始化区域性方法中的用户选择更新线程的区域性

我还根据所选国家/地区的代码页更新响应对象,并将其字符集设置为所用编码的WebName(如果我不根据代码页更新响应对象,则绑定到控件的数据将被篡改)。资源文件也基于代码页进行本地化

完成上述更改后,页面将在浏览器中正确显示

然而,当用户以一种亚洲语言输入数据时,文本就会变得一团糟。下拉列表实际上抛出无效回调或回发参数异常

在检查request.contentEncoding时,我发现它仍然是UTF-8(在web.config中设置)

如果在BeginRequest事件期间更改request.ContentEncoding,则输入正确。但我不确定用户在页面周期的早期选择了哪种语言

上述方法正确吗?
如何动态设置传入请求的编码?

该请求是客户端发送给您的。你不能选择他发送的内容,这是你的输入。但是,客户端可能应该以包含表单的页面上定义的编码发送此输入

页面上的字符集设置正确吗?你确定你不发送电子邮件吗

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

想想看。当客户端浏览器调用站点(iow请求)时,如何神奇地更改其编码?你不能。另一方面,回答是完全可行的。如果我没有完全理解你说的话,我道歉。我知道用户可以在提交数据之前更改编码,但是如何以特定的编码(通过修改Request.ContentEncoding)读取发布的数据元数据标记没有明确设置。在将页面发送到浏览器之前,我们使用了Request.ContentEncoding和Response.Charset,我的其余评论编辑在哪里消失了?我补充说,我理解我无法控制传入的请求编码,但希望避免在将其保存到DB@NoviceProgrammer:好的,回答时展开。很抱歉延迟回复。我们最初是从UTF-8开始的,但是我们从数据库中获得的数据是在DBCS中,现有的框架使用代码页对响应进行编码。因此决定以同样的方式继续下去。您建议的答案很有效,谢谢!!
    public void Application_BeginRequest(object sender, EventArgs args)
    {
        var inputEncoding = Request.Form["hiddenEncoding"];
        if (!String.IsNullOrEmpty(inputEncoding)) Request.ContentEncoding = Encoding.GetEncoding(inputEncoding);
    }