我正在发送文本 México D.F. 从 javascript 到 C# 但我得到 M??xico D.F.
我的 C# 代码如下。

public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
     System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
     string PostbackData = enc.GetString(context.Request.BinaryRead(context.Request.TotalBytes));
}

PostbackData 包含 México D.F. 文本为 M??xico D.F.
我该如何解决。请帮我。

最佳答案

你不应该使用 ASCII ,因为那里没有这样的符号 é ,所以使用 Encoding.UTF8 代替:

using System.Text;

public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
     //System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
     string postbackData = Encoding.UTF8.GetString(context.Request.BinaryRead(context.Request.TotalBytes));
}

编辑,正如 John Skeet 提到的 :您可以从您的请求中使用 Encoding 而不是尝试猜测它 - 有时甚至 UTF-8 是不够的,所以更好的方法是:
using System.Text;

public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
     //System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
     string postbackData = context.Request.ContentEncoding.GetString(context.Request.BinaryRead(context.Request.TotalBytes));
}

关于c# - 墨西哥 P.D.F.出现在 M??xico D.F.在回发时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13411955/

10-12 07:40