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 ; }