字符串和字节数组的转换的字符集
一、字符串转字节数组
String str = "金灿灿";
byte[] bytes = str.getBytes();
如果转换的时候不设置编码格式,默认是以环境的字符集编码。
1.utf-8 : byte[] bytes = str.getBytes("utf-8");//中文是占三个字节
2.gbk : byte[] bytes = str.getBytes("gbk");//中文是占两个字节
二、字节数组转字符串
1.utf-8 : String s = new String(bytes ,"utf-8");
2.gbk : String s = new String(bytes ,"gbk");
三、将一个字符串转为定长的报文
设置一个JSONObject paramJson;
//参数key
String name="payName";
//参数定长
String len="10";
int bytelength = 0;
int strlength = JSONPath.eval(paramJson,"$."+name).toString().length();
try {
bytelength = JSONPath.eval(paramJson,"$."+name).toString().getBytes("GBK").length;
} catch (UnsupportedEncodingException e) {
log.error("字符串转字节数组失败:",e);
rspJson.put("status","0");
rspJson.put("errorMessage","字符串转字节数组失败");
return rspJson;
}
if(bytelength != 0 && bytelength < Integer.valueOf(len)){
int ll = Integer.valueOf(len)-bytelength;
body+=String.format("%1$-"+strlength+"s", JSONPath.eval(paramJson,"$."+name));
body+=String.format("%1$-"+ll+"s","");
}else if(bytelength > Integer.valueOf(len)){
log.error(name+":"+JSONPath.eval(paramJson,"$."+name).toString()+"_该字段长度大于报文规定长度:"+Integer.toString(bytelength)+">" +len);
rspJson.put("status","0");
rspJson.put("errorMessage",name+"字段长度大于报文规定长度");
return rspJson;
}else{
body+=String.format("%1$-"+Integer.valueOf(len)+"s", JSONPath.eval(paramJson,"$."+name));
}