開発では、Ajax を使用してデータ要求を行ったり、jQuery を使用して GET または POST 要求を送信したりすることがよくあります。中国語のパラメータを渡すときに文字化けの問題が発生することがあります。この記事では、jQuery リクエストの URL パラメーターが文字化けする問題を調査し、いくつかの解決策を提供します。
ブラウザがサーバーにリクエストを送信すると、URL パラメータがエンコードされます。エンコード方式が異なると、漢字の変換結果も異なります。たとえば、GB2312 エンコードでは、文字「中」に対応するエンコードは「D6D0」であり、UTF-8 エンコードでは、文字「中」に対応するエンコードは「E4B8AD」です。
ブラウザが GET モードでリクエストを送信すると、パラメータは自動的にエンコードされます。jQuery.ajax メソッドを使用するとき、パラメータに中国語の文字が含まれている場合、jQuery はこれらの文字を自動的にエンコードします。通常はこのエンコード形式です。 UTF-8です。ただし、サーバーがリクエストを受信するときに、文字セットのエンコードが指定されていない場合、デフォルトのエンコード方式がパラメータの処理に使用され、パラメータがデコードされるため、中国語のパラメータが文字化けします。
中国語パラメータ文字化けの問題を解決するには、状況に応じて異なる処理を実行する必要があります。
2.1. サーバー側のエンコード方式を変更する
場合によっては、サーバー側でエンコード方式を直接変更し、UTF-8 エンコードの使用を指定して、次の問題を回避できます。中国語パラメータが文字化けする。たとえば、Java JSP コードでは、次のコードを追加できます:
request.setCharacterEncoding("UTF-8");
2.2. jQuery エンコード メソッドを変更する
jQuery.ajax では、値を設定することでエンコードを変更できます。パラメータ processData と contentType Way の。データ エンコードが独自に処理されることを示すには、processData を false に設定します。データ エンコード方式が UTF-8 であることを示すには、contentType を application/x-www-form-urlencoded;charset=utf-8 に設定します。
$.ajax({ url: 'xxx', data: { name: '中文' }, type: 'GET', processData: false, contentType: 'application/x-www-form-urlencoded;charset=utf-8', success: function(data) { // 处理返回数据 }, error: function(xhr, textStatus, errorThrown) { // 处理错误 } });
2.3. エンコードとデコードの変換
他のエンコード方法を使用する必要がある場合は、エンコードとデコードの操作を手動で実行できます。 jQuery では、encodeURI メソッドと decodeURI メソッドを使用して文字列をエンコードおよびデコードできます。
var name = '中文'; var encodedName = encodeURI(name); // 对名称进行编码 $.ajax({ url: 'xxx?name=' + encodedName, // 将编码后的名称传递给服务器 type: 'GET', success: function(data) { // 处理返回数据 }, error: function(xhr, textStatus, errorThrown) { // 处理错误 } });
サーバー側では、JavaScript の unescape 関数を使用して、デコードされたパラメーター値を復元できます。
String str = request.getParameter("name"); str = URLDecoder.decode(str, "UTF-8"); str = unescape(str);
上記は、サーバー側のエンコード方法の変更、jQuery エンコード方法の変更、および jQuery リクエストの URL パラメーターが文字化けする問題の解決策です。エンコードとデコードの変換を実行します。エンコード方法とエンコード変換を理解することで、中国語パラメータの文字化けの問題を効果的に回避し、実際の開発効率を向上させ、エラーの可能性を減らすことができます。
以上がjqueryリクエストのURLパラメータが文字化けする問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。