WebLogic8.1的中文问题解决方法(转载)[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 yukikaze 的 blog

strcode.substring(0, intstrlen / 2)
+ strcode.substring(intstrlen / 2 + 1, intstrlen + 1);
stroriginal =
new securitytest().loopcode(
strcode,
constants.int_return_loop - intrnd);
strdecodeme = stroriginal;
return strdecodeme;
}
/**
* 加密方法.随机取得加密的循环次数,使得每次加密所得的秘文会有所不同
* zhg
* 创建日期 (2002-12-15 10:17:08)
* stroriginal 需加密的字符串
* 加密后的字符串
* 1.0
*/
public static string encode(string stroriginal) {
string strcode;
int intrnd;
char rnd;
int intstrlen;
string strcodeme = "";
if (stroriginal.equals(""))
return strcodeme;
//2 到 93 之间的随即数,即同一原文可能获得93种不同的秘文
intrnd = (int) (math.random() * (constants.int_return_loop - 2) + 2);
strcode = new securitytest().loopcode(stroriginal, intrnd);
//对随机数作偏移加密
rnd = (char) (intrnd + new securitytest().startchar());
intstrlen = strcode.length();
strcodeme =
strcode.substring(0, intstrlen / 2)
+ rnd
+ strcode.substring(intstrlen / 2, intstrlen);
if (strcodeme.indexof("'") >= 0)
return encode(stroriginal);
else
return strcodeme;
}
//基础的凯撒算法,并对于每一位增加了偏移
private string kaisercode(string stroriginal) {
int intchar;
string strcode;
int i;
int intstrlen;
int inttmp;

intstrlen = stroriginal.length();

strcode = "";
for (i = 0; i < intstrlen; i++) {
intchar = stroriginal.substring(i, i + 1).hashcode();
inttmp = intchar - this.startchar();
inttmp =
(inttmp * constants.int_prim_number + i + 1) % this.maxchar()
+ this.startchar();
strcode = strcode + (char) (inttmp);
}
return strcode;
}
//循环调用凯撒算法一定次数后,可以取得原文
private string loopcode(string stroriginal, int intloopcount) {
string strcode;
int i;
strcode = stroriginal;
for (i = 0; i < intloopcount; i++)
strcode = this.kaisercode(strcode);
return strcode;
}
public static void main(string[] args) throws exception {

string pw = "中文";
system.out.println(pw);
pw = new sun.misc.base64encoder().encode(pw.getbytes());
system.out.println(pw);
//加密
string pw1 = encode(pw);
system.out.println(pw1);
//解密
string pw2 = decode(pw1);
system.out.println(pw2);
byte[] bt = new sun.misc.base64decoder().decodebuffer(pw2);
pw2 = new string(bt);
system.out.println(pw2);
}
private int maxchar() {
string str1 = "~";
string str2 = "!";
return str1.hashcode() - str2.hashcode() + 1;
}
private int startchar() {
string str1 = "!";
return str1.hashcode();
}
}

总结
本文列举了weblogic中经常碰到的一些中文问题的解决方法.希望读者能够灵活运用.需要提醒的是gbk字符集比gb2312的字库大,有些不常用字在gb2312里是没有的.所以请尽量使用gbk字符集.

本文关键:WebLogic8.1的中文问题解决方法(转载)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top