私が遭遇した問題は、URL のパラメーターの内容に & が含まれているということです。これを解決するには 2 つの方法があります。1 つは、JS を使用してページ上の
をトランスコードすることです。 (フロントエンド処理)
${group.cn }) <スクリプト言語="javascript">
function test(a,b){
alert("test");
location.href='groupsDetailServlet?groupTypeForDetail=' a '&cn=' encodeURIComponent(b);
}
script>
2 番目の方法: バックエンドでの処理
1>jsp: ${group. cn }
2>Java Bean: グループ
表示される文字列 cn;//CN
パラメータが渡されたときの文字列 encodedCN;//CN
public Group(String cn) { this(); this.cn = cn; this.encodedCN =LdapUtil.encodeURLSr(cn); }
public void setCn (文字列名) { this.cn = name; LdapUtil.encodeURLSr(cn)); }
public String getCn () { return cn; }
public void setEncodedCN (String cn) = cn; }
3> 呼び出しクラスのデコード処理:
コードをコピーします
コードは次のとおりです: String cn = LdapUtil.decodeURLStr(encodedCN) ;
4>LdapUtil.java
コピーcode
コードは次のとおりです。 public static String encodeURLSr(String src)
{
return src != null && src.trim( ).length() > src.replaceAll("&", "@") : "";
}
public static String decodeURLStr(String src)
{
return src ! = null && src.trim().length() > src.replaceAll("@ ", "&") : "";
------------------------------------------以下は--- --インターネット検索 データ共有------------------------------------------ -
url を使用してパラメータを渡す この際、一部のパラメータや中国語名 (または特殊文字を含む) の URL アドレスが渡されることが多く、バックグラウンド処理中に変換エラーが発生します。一部の配信ページではGB2312が使用されており、受信ページではUTF8が使用されているため、受信したパラメータが元のパラメータと一致しない可能性があります。サーバー側の urlEncode 関数を使用してエンコードされた URL と、クライアント側の JavaScript の encodeURI 関数を使用してエンコードされた URL では、結果が異なります。 JavaScript のテキストのエンコードには、3 つの関数:escape、encodeURI、encodeURIComponent が含まれ、3 つのデコード関数に対応:unescape、decodeURI、decodeURIComponent
JavaScript のエンコード メソッド :
escape ( ) メソッド: 使用指定された文字列をエンコードするための ISO ラテン文字セット。 すべてのスペース、句読点、特殊文字、およびその他の非 ASCII 文字は、%xx 形式の文字エンコーディングに変換されます (xx は、文字セット テーブル内の文字エンコーディングの 16 進数と同じです)。たとえば、スペース文字に対応するエンコーディングは です。アンエスケープ方式はその逆です。このメソッドでエンコードされない文字: @ * /
encodeURI () メソッド: UTF-8 エンコード形式を使用して、URI 文字列をエスケープ形式の文字列に変換します。 このメソッドでエンコードされない文字: ! @ # $& * ( ) = : / ; '
encodeURIComponent () メソッド: UTF-8 エンコード形式を使用して、URI 文字列をエスケープ形式の文字列に変換します。 encodeURI() と比較して、このメソッドは / やその他の文字など、より多くの文字をエンコードします。 したがって、文字列に URI の複数の部分が含まれている場合、このメソッドを使用してエンコードすることはできません。そうしないと、/ 文字がエンコードされた後で URL にエラーが表示されます。このメソッドでエンコードされない文字: ! * ( )
したがって、中国語の文字列の場合、文字列エンコード形式を UTF-8 形式に変換したくない場合は、元のページの文字セットとターゲットページは一貫しています)、エスケープを使用してください。ページが GB2312 またはその他のエンコードで、パラメーターを受け入れるページが UTF-8 エンコードされている場合は、encodeURI または encodeURIComponent を使用する必要があります。
また、encodeURI/encodeURIComponentはjavascript1.5以降に導入され、javascript1.0ではエスケープが利用可能になりました。
1. 結合された URL が # などの特殊文字で切り捨てられないように、パラメーターを渡すときに encodeURIComponent を使用する必要があります。例:
2. URL ジャンプを行うときに encodeURI を全体として使用できます。 例: Location.href=encodeURI ("http://cang.baidu.com/do/s?word=Baidu &ct=21");
3. js がデータを使用する場合はエスケープを使用できます。 例: コレクション内の履歴レコード。
4.escapeが0-255以外のUnicode値をエンコードした場合、%u****形式で出力されます。それ以外の場合、escape、encodeURI、encodeURIComponentのエンコード結果は同じになります。
最も一般的に使用されるのは、中国語、韓国語、その他の特殊文字を utf-8 形式の URL エンコードに変換する encodeURIComponent です。そのため、encodeURIComponent を使用してパラメータをバックグラウンドに渡す必要がある場合は、バックグラウンドでのデコードが必要です。 utf-8 をサポートするため (フォーム内のエンコード方法は現在のページのエンコード方法と同じです)
エスケープでエンコードされない文字は 69 文字あります: *、-、.、/、 @、_、0-9、a-z、A-Z
encodeURI でエンコードされない文字は 82 文字あります: !、#、$、&、'、(、)、*、, , , - , 。 、 ; 、 = 、 ? 、 @ 、 _ 、 ~ 、 0-9 、 a-z 、 A-Z
encodeURIComponent には、 !、 '、 ( 、 ) 、 * 、 - 、 . 、 a-z 、 A-Z
URL には以下が含まれます URL 内で使用できる特殊文字とエンコードされた値: (省略)
encodeURI() エンコード変換が直接実行されることがプロジェクトで判明しましたURL のパラメータ部分を指定し、バックグラウンド サーブレットが getParamater() を通じて取得すると、変換せずに直接正しい値を取得できます。 注: 中国語ではパラメーターは使用されず、フレームワークは Struts フレームワークを使用します。