protegido void Page_Load (remetente do objeto , EventArgs e) { Response.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); // Request.ContentEncoding = Encoding.GetEncoding("gb2312"); // A configuração é inválida. }
Dessa forma, usamos gb2312 para cada resposta. De acordo com o objeto requset padrão do asp.net, a codificação é utf-8 quando inicializada. Quando inserimos chinês na caixa de texto e clicamos no botão, a codificação da solicitação é utf-. 8 e a codificação da resposta é gb2312 , portanto, os dados da caixa de texto ficam ilegíveis quando enviados de volta (a parte chinesa da caixa de texto exibe uma sequência de pontos de interrogação).
substituição protegida void InitializeCulture() { base .InitializeCulture(); Request.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); }
Solução 2: obtenha a string de dados do formulário e analise-a você mesmo
Encoding encoding = Encoding.GetEncoding ( " gb2312 " ) ; Stream resStream = Request.InputStream; // Os formulários recebidos são colocados aqui; byte [] conteúdo = novo byte [resStream.Length]; resStream.Read(conteúdo, 0 , conteúdo.Length); string postQuery = encoding.GetString(conteúdo); // NameValueCollection resDic = HttpUtility.ParseQueryString(postQuery, encoding); // Resolva o problema de codificação, ele ainda será decodificado automaticamente por padrão;
Um método de análise simples é fornecido abaixo:
/// <resumo>
/// Analisar string de consulta /// </summary>
/// <param name="postQuery"></param>
/// <retorna></retorna>
private NameValueCollection GetFormParams( string postQuery)
{
Resultado NameValueCollection = new NameValueCollection();
string [] nomeValueList = postQuery.Split( ' & ' );
foreach (item de string em nameValueList)
{
if (item.Contém( ' = ' ))
{
string [] nomeValue = item.Split( ' = ' );
resultado.Add(nomeValor[ 0 ], nomeValue[ 1 ]);
}
}
resultado de retorno ;
}