字符串和字节数组的转换的字符集

一、字符串转字节数组

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));
}

 

posted @ 2019-04-24 16:28  暗失一切  阅读(2573)  评论(0编辑  收藏  举报