最近在做一个火车票余票查询的程序,主要是模拟POST取http://www.12306.cn/mormhweb/kyfw/ypcx/中的数据,通过http工具抓到了POST的数据,但里面的车站中文编码始终没搞对,请大家指教,
我抓到的数据,西安(897f5b360254943b) 但我查到实际unicode码应是:897F5B89 ,只有前面3个字节能对上,不知为什么?
我抓到的数据,西安(897f5b360254943b) 但我查到实际unicode码应是:897F5B89 ,只有前面3个字节能对上,不知为什么?
UTF-8
GBK
都试试。
<title>铁路客户服务中心</title>
iframeTrainInfoByStation.jsp
我取的是http://dynamic.12306.cn/TrainQuery/leftTicketByStation.jsp
查余票的
parent.document.getElementById("gxsj").innerHTML="余票信息每小时更新一次,本次信息更新时间为16:31。";
parent.document.getElementById("ictN").value="84"parent.mygrid.clearAll();parent.document.getElementById("stationDIV").innerHTML="日期:<strong>20110517</strong>;<strong>南京</strong>→<strong>西安</strong>列车全部余票信息<strong>1</strong>条:";if(parent.document.getElementById("ckb1").checked &&
!parent.document.getElementById("ckb2").checked &&
!parent.document.getElementById("ckb3").checked &&
!parent.document.getElementById("ckb4").checked &&
!parent.document.getElementById("ckb5").checked &&
!parent.document.getElementById("ckb6").checked &&
!parent.document.getElementById("ckb7").checked &&
parent.cc.getComboText().length == 0){parent.mygrid.setColumnHidden(7,"true");
parent.mygrid.setColumnHidden(8,"true");
parent.mygrid.setColumnHidden(9,"true");
}else{
var string = parent.cc.getComboText();
if(string.length != 0 && (string.charAt(0) == 'C' || string.charAt(0) == 'D' || string.charAt(0) == 'G')){
parent.mygrid.setColumnHidden(7,"true");
parent.mygrid.setColumnHidden(8,"true");
parent.mygrid.setColumnHidden(9,"true");
}else{
parent.mygrid.setColumnHidden(7,"false");
parent.mygrid.setColumnHidden(8,"false");
parent.mygrid.setColumnHidden(9,"false");
}
}parent.mygrid.addRow(0,"1,T138(上海->西安)^skbcx.jsp?cxlx=cc&date=20110517&trainCode=T138 ,南京^skbcx.jsp?cxlx=czjgcc&zm=&date=20110517&stationName_passTrain=%E5%8D%97%E4%BA%AC , 西安^skbcx.jsp?cxlx=czjgcc&zm=&date=20110517&stationName_passTrain=%E8%A5%BF%E5%AE%89, 19:07 ,08:21 ,13:14, 0 , -- ,0,0,--,--,--,--,有,特快" , 0);
</script>
没错,脚本是iframeLeftTicketByStation.jsp
在post数据时有个startStation_ticketLeft表示始发站,我的问题就是这个东东,不知它是何种编码?请指教
ictN 84
fdl fdl
lx 00
nmonth3 05
nmonth3_new_value true
nday3 17
nday3_new_value false
startStation_ticketLeft 53174e1303c219ac
startStation_ticketLeft_new_value true
arriveStation_ticketLeft 897f5b36057445c9
arriveStation_ticketLeft_new_value true
trainCode
trainCode_new_value true
rFlag 1
name_ckball value_ckball
tFlagDC DC
tFlagZ Z
tFlagT T
tFlagK K
tFlagPK PK
tFlagPKE PKE
tFlagLK LK
// yp.js 中的一个方法
// 应该是用来编码字符串的
// 在我的页面中 pwd = "liusheng";function a1ert(str, pwd) {
var prand = "";
for (var i = 0; i < pwd.length; i++) {
prand += pwd.charCodeAt(i).toString();
} var sPos = Math.floor(prand.length / 5);
var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) + prand.charAt(sPos * 4) + prand.charAt(sPos * 5), 10);
var incr = Math.ceil(pwd.length / 2);
var modu = Math.pow(2, 31) - 1; var salt = Math.round(Math.random() * 1000000000) % 100000000;
prand += salt; prand = (mult * prand.length + incr) % modu;
var enc_chr = "";
var enc_str = ""; for (var i = 0; i < str.length; i++) {
alert(str.charCodeAt(i));
enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255)); if (enc_chr < 16) {
enc_str += "0" + enc_chr.toString(16);
}
else
enc_str += enc_chr.toString(16); prand = (mult * prand + incr) % modu;
} salt = salt.toString(16); while (salt.length < 8) salt = "0" + salt;
enc_str += salt; return enc_str;
}