protected void Page_Load (expéditeur de l'objet , EventArgs e) { Response.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); // Request.ContentEncoding = Encoding.GetEncoding("gb2312"); // Le paramètre n'est pas valide }
De cette façon, nous utilisons gb2312 pour chaque réponse. Selon l'objet requset par défaut d'asp.net, le codage est utf-8 lors de l'initialisation. Lorsque nous saisissons le chinois dans la zone de texte et cliquons sur le bouton, le codage de la demande est utf-. 8 et le codage de la réponse est gb2312 , donc les données de la zone de texte sont tronquées lorsqu'elles sont renvoyées (la partie chinoise de la zone de texte affiche une chaîne de points d'interrogation)
remplacement protégé void InitializeCulture() { base .InitializeCulture(); Request.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); }
Solution 2 : obtenez la chaîne de données du formulaire et analysez-la vous-même
Encoding encoding = Encoding.GetEncoding( " gb2312 " ); // Sélectionnez la méthode de décodage Stream resStream = Request.InputStream; // Les formulaires reçus sont placés ici octet [] contenu = nouvel octet [resStream.Length] ; resStream.Read(content, 0 , content.Length); chaîne postQuery = encoding.GetString(content); // NameValueCollection resDic = HttpUtility.ParseQueryString(postQuery, encoding); // Résout le problème d'encodage, il décodera toujours automatiquement par défaut
Une méthode d’analyse simple est donnée ci-dessous :
////// Analyser la chaîne de requête /// /// /// privé NameValueCollection GetFormParams ( chaîne postQuery) { Résultat NameValueCollection = new NameValueCollection(); string [] nameValueList = postQuery.Split( ' & ' ); foreach (élément de chaîne dans nameValueList) { if (item.Contains( ' = ' )) { string [] nameValue = item.Split( ' = ' ); result.Add(nameValue[ 0 ], nameValue[ 1 ]); } } renvoyer le résultat ; }