Java上传文件到Linux,显示乱码解决方法

在windows系统下 默认编码是GBK/GB2312的编码格式,linux上默认为utf-8的编码格式。

当我们在windows上上传文件的时候,JVM会根据本身的操作系统所默认的编码格式 编译成unicode字节数组,进行存储。

然后解析的时候也会根据本身的操作系统默认的编码格式进行解析。

上传文件中文乱码时:  JVM编译成gbk格式的unicode字节数组,然后解析成utf-8的格式,所以导致乱码。
乱码的本质是:   字符串原本的编码格式  和 读取解析的编码格式不一致  所造成的 。


在java中使用  new String(bytes,charset); 方法可以解决乱码问题。

 bytes :表示编译采用什么格式进行编译 ,charset : 表示使用什么格式进行解析


在windows上    如:

String str="我很帅哦";

System.out.println(new String(str.getBytes(),"gbk")); 是正确的

System.out.println(new String(str.getBytes("utf-8"),"utf-8"));  也是正确的

System.out.println(new String(str.getBytes("gbk"),"utf-8"));  是错误的 


那么 如何将GBK 转化成utf-8呢? (实际上是unicode转成utf-8)

byte[] utfbytes=str.getBytes("utf-8");

String strFinsh=new String (utfbytes,"utf-8");

简写:System.out.println(new String(str.getBytes("utf-8"),"utf-8"));  


utf-8转成gbk 也是一样的 

new String(str.getBytes("gbk"),"gbk");

 getBytes(charset)

在JDK中这样描述的:Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值