String的getBytes方法和String(byte[] bytes,Charset

String的getBytes方法和String(byte[] bytes,Charset charset)组合使用解决jsp传递中文参数乱码的情况
public byte[] getBytes(Charset charset)
使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。

此方法总是使用此字符集的默认替代 byte 数组替代错误输入和不可映射字符序列。如果需要对编码过程进行更多控制,则应该使用 CharsetEncoder 类。

 

参数:
charset - 用于编码 String 的 Charset
返回:
所得 byte 数组
 
public String(byte[] bytes,Charset charset)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。新 String 的长度是字符集的函数,因此可能不等于 byte 数组的长度。
此方法总是使用此字符集的默认替代字符串替代错误输入和不可映射字符序列。如果需要对解码过程进行更多控制,则应该使用 CharsetDecoder 类。

参数:
bytes - 要解码为字符的 byte
charset - 要用来解码 bytes 的 charset
for exam:
String name = request.getParameter(souceName);
String _name = new String(name.getBytes("iso-8859-1"), "gbk");
这里应该是浏览器会将请求URL,转成一个个字节(其实就相应于用了iso-8859-1编码方式转了,实质应该是直接转为二进制流的),所以到到controller层后,需用iso-8859-1转为一个个字节,后再用页面所用的编码格式来解析这些字节数据,再转为string(string在java是unicode编码的),便达到将浏览器转来的信息还原为正确的信息。

你可能感兴趣的:(jsp,浏览器)