中文传参乱码解决:
1 前端h5 获取中文参数做转码js:(参数:页面获取的中文字符串,返回:转码传向后台的字符串)
function stringToUncodeBytes(str)
{
var ch, st, re = [];
var result="";
for (var i = 0; i < str.length; i++ )
{
ch = str.charCodeAt(i); // get char
if (ch<255)
{
result=result+"00"+byteToHex(ch& 0xFF);
}
else
{
st = []; // set up "stack"
do {
st.push(byteToHex(ch&0xFF)); // push byte to stack
ch = ch >> 8; // shift value down by 1 byte
}
while ( ch );
result=result+st.reverse();
}
}
result=result.replace(/,/g,"");
return result;
}
function byteToHex(byte1)
{
var result;
result=byte1.toString(16);
if (result.length==1)
{
result="0"+result;
}
return result;
}
2 后台接收参数,做逆转码,代码片段:(入参:上述H5转换后的参数字符串,出参:正常中文字符串)
//解析参数-------------
public String getName(String agent_name)
{
StringBuffer sb = new StringBuffer();
int strLen = agent_name.length() / 4;
char[] c = agent_name.toCharArray();
for (int i = 0; i < strLen; i++) {
String str = new String(c, i * 4, 4);
sb.append((char) Integer.parseInt(str, 16));
}
String newname = sb.toString();
return newname;
}