インターネットで多くのメソッドを検索しました。おそらく、使用した jquery.form.js がバージョン 3.01 であり、今年の 3 月 6 日にリリースされたばかり (ため息…一昨日) であるため、一般的にはそうではありません。仕事。下位バージョンが動作するかどうかについては未検証ですが、やはり無責任なコピーコピーコピーがほとんどです。送信前にすべての値をエンコードする方法もありますが、これは面倒でフロントエンドのコードが多く追加されると思うので、採用しませんでした。
分かった、自分たちで対処しましょう。まず、問題解決への入り口であるエントリーポイントを見つける必要があります。 JS で渡されたデータをエンコードしたいので、まずデータ転送関数から始める必要があります。 ajaxSubmit 関数を呼び出しているだけです。 js ファイルを開き、この関数を見つけてソース コードを確認し、次の行を見つけます。
var qx, a = this.formToArray(options.semantic);
formToArray の機能は、収集されたフォーム データを次のように変換することです。オブジェクト配列を取得し、それを $.get 、 $.post 、およびその他の Ajax 関数に渡します。チャンスはあると思います。ただし、その後に数百行のコードが続きます。時間を節約するために、すぐに本題に進みましょう。上記の行にブレークポイントを設定し、Web ページに中国語データを入力し、段階的な JS デバッグを通じてソース コードを理解します。プログラムの実行後、いくつかのジャンプを経て、ついに fieldValue 関数の最後の部分を見つけました:
return $(el).val();
このように、ここでクライアントをエンコードするだけで済みます。
returnエスケープ($(el).val()) ;
次に、サーバー側で Server.UrlDecode() を使用してデコードすると、文字化けがなくなり、中国語の文字が正しく受け入れられるようになります~~~
何か良い方法や提案はありますか?