ホームページ >ウェブフロントエンド >jsチュートリアル >アドレスバーに渡された中国語パラメータが文字化けし、js_javascript スキルのエスケープを使用してトランスコードされます。

アドレスバーに渡された中国語パラメータが文字化けし、js_javascript スキルのエスケープを使用してトランスコードされます。

WBOY
WBOYオリジナル
2016-05-16 17:24:121259ブラウズ

文字化け、文字化け、頭でっかち、うっとうしい問題はTomcatを設定すれば解決するとのことですが、この時は中国語を直接送信するのではなく、トランスコードする方法も考えられます。 js でトランスコーディングをエスケープするには、次のように 2 回使用してください。

str=escape(str);
xxx.do?name=str;

バックグラウンドでクラス メソッドを通じて転送します:

Escape.unescape(request.getParameter("name")); >
Escape クラスは次のとおりです:




コードをコピーします

コードは次のとおりです:

パッケージ com.laneasy.hy.util;

/**
* js エンコーディングおよびトランスコーディング Java 実装クラス
*
* @author yangjinde
*/
public class Escape {

/**定数の 16 進数。*/
private Final static String[] hex = { "00" 、「01」、「02」、「03」、「04」、「05」、
「06」、「07」、「08」、「09」、「0A」、「0B」、「0C」 "、"0D"、"0E"、"0F"、"10"、
"11"、"12"、"13"、"14"、"15"、"16"、"17"、" 18"、"19"、"1A"、"1B"、
"1C"、"1D"、"1E"、"1F"、"20"、"21"、"22"、"23"、 「24」、「25」、「26」、
「27」、「28」、「29」、「2A」、「2B」、「2C」、「2D」、「2E」、「2F」 、「30」、「31」、
「32」、「33」、「34」、「35」、「36」、「37」、「38」、「39」、「3A」、「3B」 "、"3C"、
"3D"、"3E"、"3F"、"40"、"41"、"42"、"43"、"44"、"45"、"46"、" 47"、
"48"、"49"、"4A"、"4B"、"4C"、"4D"、"4E"、"4F"、"50"、"51"、"52"、
「53」、「54」、「55」、「56」、「57」、「58」、「59」、「5A」、「5B」、「5C」、「5D」、
「5E」、「5F」、「60」、「61」、「62」、「63」、「64」、「65」、「66」、「67」、「68」、
「69」 、「6A」、「6B」、「6C」、「6D」、「6E」、「6F」、「70」、「71」、「72」、「73」、
「74」、「75」 "、"76"、"77"、"78"、"79"、"7A"、"7B"、"7C"、"7D"、"7E"、
"7F"、"80"、" 81"、"82"、"83"、"84"、"85"、"86"、"87"、"88"、"89"、
"8A"、"8B"、"8C"、 「8D」、「8E」、「8F」、「90」、「91」、「92」、「93」、「94」、
「95」、「96」、「97」、「98」 、「99」、「9A」、「9B」、「9C」、「9D」、「9E」、「9F」、
「A0」、「A1」、「A2」、「A3」、「A4」 "、"A5"、"A6"、"A7"、"A8"、"A9"、"AA"、
"AB"、"AC"、"AD"、"AE"、"AF"、" B0"、"B1"、"B2"、"B3"、"B4"、"B5"、
"B6"、"B7"、"B8"、"B9"、"BA"、"BB"、 「BC」、「BD」、「BE」、「BF」、「C0」、
「C1」、「C2」、「C3」、「C4」、「C5」、「C6」、「C7」 、「C8」、「C9」、「CA」、「CB」、
「CC」、「CD」、「CE」、「CF」、「D0」、「D1」、「D2」、「D3」 "、"D4"、"D5"、"D6"、
"D7"、"D8"、"D9"、"DA"、"DB"、"DC"、"DD"、"DE"、" DF"、"E0"、"E1"、
"E2"、"E3"、"E4"、"E5"、"E6"、"E7"、"E8"、"E9"、"EA"、 「EB」、「EC」、
「ED」、「EE」、「EF」、「F0」、「F1」、「F2」、「F3」、「F4」、「F5」、「F6」 、"F7"、
"F8"、"F9"、"FA"、"FB"、"FC"、"FD"、"FE"、"FF" };

/**定数 val.*/
private Final static byte[] val = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x00、0x01、
0x02、 03、0x04、0x05、0x06 、0x07、0x08、0x09、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x0A、0x0B、0x0C、0x0D、0x0E、0x0F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x0A、0x0B 、0x0C、0x0D、0x0E、0x0F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、0x3F、
0x3F、 3F、0x3F、0x3F、0x3F 、0x3F、0x3F、0x3F };

/**
* 逃げる。
*
* @param s
* s
*
* @return 文字列
*/
/**
* エンコード
*
* @param s
* @return
*/
public static String escape(String s) {
if (s != null) {
StringBuffer sbuf = new StringBuffer();
int len = s.length();
for (int i = 0; i int ch = s.charAt(i);
if ('A' sbuf.append((char) ch);
} else if ('a' sbuf.append((char) ch);
} else if ('0' sbuf.append((char) ch);
} else if (ch == '-' || ch == '_' || ch == '.' || ch == '!'
|| ch == '~' || ch == '*' || ch == ''' || ch == '('
|| ch == ')') {
sbuf.append((char) ch);
} else if (ch sbuf.append('%');
sbuf.append(hex[ch]);
} else {
sbuf.append('%');
sbuf.append('u');
sbuf.append(hex[(ch >>> 8)]);
sbuf.append(hex[(0x00FF & ch)]);
}
}
return sbuf.toString();
}
null を返します。
}

/**
* 逃げないでください。
*
* @param s
* s
*
* @return 文字列
*/
/**
* デコードに関する注意: このメソッドでは、パラメータ s がエスケープ() エンコードされているかどうかに関係なく、正しい「デコード」結果が得られることが保証されます。
*
* @param s
* @戻る
*/
public static String unescape(String s) {
if (s != null) {
StringBuffer sbuf = new StringBuffer();
int i = 0;
int len = s.length();
while (i < len) {
int ch = s.charAt(i);
if ('A' sbuf.append((char) ch);
} else if ('a' sbuf.append((char) ch);
} else if ('0' sbuf.append((char) ch);
} else if (ch == '-' || ch == '_' || ch == '.' || ch == '!'
|| ch == '~' || ch == '*' || ch == ''' || ch == '('
|| ch == ')') {
sbuf.append((char) ch);
} else if (ch == '%') {
int cint = 0;
if ('u' != s.charAt(i 1)) {
cint = (cint cint = (cint i = 2;
} else {
cint = (cint << 4) | val[s.charAt(i 2)];
cint = (cint cint = (cint cint = (cint i = 5;
}
sbuf.append((char) cint);
} else {
sbuf.append((char) ch);
}
私;
}
return sbuf.toString();
}
null を返します。
}

}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。