url上的中文字符是ISO-8859-1。后台获取中文乱码解决问题。
需要转码
public static String changeCharset(String str, String defaultValue)
{
if (str != null)
{
try
{
if ((StringUtils.isNotBlank(str)) && str.equals(
new String(str.getBytes("ISO-8859-1"), "ISO-8859-1")))
{
return new String(str.getBytes("ISO-8859-1"), "UTF-8");
}
return str;
}
catch (UnsupportedEncodingException e)
{
throw new RuntimeException("字符串转换异常!!!!");
}
}
return defaultValue;
}
value = new String(value.getBytes("ISO-8859-1"), "UTF-8");
你们应该都有遇到过这种问题,就是utf-8或者gbk编码格式的中文字符,若转成"iso-8859-1"编码格式,则会变成乱码,为什么呢?那我们得先知道以下知识点。
1.utf-8存储中文汉字用的是3个字节
2."gbk"存储中文汉字用的是2个字节
3.iso-8859-1存储任何字符都是1个字节
知道这个之后就能原因明朗了,本来是用三个字节或两个字节存的内容,你用一个字节存,这能不出事吗?能不变成乱码吗?
那就转化不了了吗?
我就再想,存不下,那就多分几个字节存呗,汉字总是可以用iso-8859-1编码表示的!