Java中文乱码——6、快门文件上传乱码

来源:互联网 发布:2017高送转 数据宝 编辑:程序博客网 时间:2024/05/22 12:14
快门支持文件上传功能,能把用户上传的文件上传到TFS、Oracle、Hive等地方。在开发过程中发现,上传到TFS的文件、插入ORACLE、HIVE的数据有乱码。
最终发现原因如下:
1、文件上传的是字节流,其编码未知
2、无论以各种编码去理解该字节流都是不对的
那么,解决方案也比较简单
1、获取到字节流时先判断编码
2、将字节流统一转换成一种编码,比如:UTF-8
其中编码格式判断采用如下方式:
public static String guessEncoding(byte[] bytes) {      String DEFAULT_ENCODING = "UTF-8";      org.mozilla.universalchardet.UniversalDetector detector =          new org.mozilla.universalchardet.UniversalDetector(null);      detector.handleData(bytes, 0, bytes.length);      detector.dataEnd();      String encoding = detector.getDetectedCharset();      detector.reset();      if (encoding == null) {          encoding = DEFAULT_ENCODING;      }      return encoding;  }  
需要引入如下jar包:
<dependency>  <groupId>com.googlecode.juniversalchardet</groupId>  <artifactId>juniversalchardet</artifactId>  <version>1.0.3</version></dependency>
参考:http://blog.csdn.net/ajaxhu/article/details/12446917
0 0