protected void Page_Load( Objektsender , EventArgs e) { Response.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); // Request.ContentEncoding = Encoding.GetEncoding("gb2312"); // Die Einstellung ist ungültig }
Auf diese Weise verwenden wir gb2312 für jede Antwort. Gemäß dem Standardanforderungsobjekt von asp.net lautet die Codierung bei der Initialisierung utf-8. 8 und die Antwortkodierung ist gb2312, sodass die Textfelddaten beim Zurücksenden verstümmelt werden (im chinesischen Teil des Textfelds wird eine Reihe von Fragezeichen angezeigt).
protected override void InitializeCulture() { Basis .InitializeCulture(); Request.ContentEncoding = Encoding.GetEncoding( " gb2312 " ); }
Lösung 2: Holen Sie sich die Formulardatenzeichenfolge und analysieren Sie sie selbst
Kodierungkodierung = Encoding.GetEncoding( " gb2312 " ); // Wählen Sie die Dekodierungsmethode aus Stream resStream = Request.InputStream; // Die empfangenen Formulare werden hier platziert Byte [] Inhalt = neues Byte [resStream.Length]; resStream.Read(content, 0 , content.Length); string postQuery = kodierung.GetString(content); // NameValueCollection resDic = HttpUtility.ParseQueryString(postQuery,kodierung); // Lösen Sie das Kodierungsproblem, es wird weiterhin standardmäßig automatisch dekodiert
Nachfolgend finden Sie eine einfache Analysemethode:
/// <Zusammenfassung> /// Abfragezeichenfolge analysieren /// </summary> /// <param name="postQuery"></param> /// <returns></returns> private NameValueCollection GetFormParams( string postQuery) { NameValueCollection result = new NameValueCollection(); string [] nameValueList = postQuery.Split( ' & ' ); foreach ( String- Element in nameValueList) { if (item.Contains( ' = ' )) { string [] nameValue = item.Split( ' = ' ); result.Add(nameValue[ 0 ], nameValue[ 1 ]); } } Ergebnis zurückgeben ; }