url上的中文字符是ISO-8859-1编码。后台获取中文乱码 , 采用编码解码方式解决问题

该博客探讨了ISO-8859-1编码无法正确存储UTF-8或GBK编码的中文字符导致的乱码问题。文章解释了UTF-8和GBK存储中文的字节数,并指出ISO-8859-1每个字符只占1字节,从而引发乱码。解决方案是通过转码将ISO-8859-1编码的字符串转换为UTF-8。示例代码展示了如何进行转换,以避免出现异常。
摘要由CSDN通过智能技术生成

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编码表示的!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值