三木猿 发表于 2020-10-29 14:53

(java)有什么办法把MultipartFile上传的文件转为utf-8的编码吗

文件是csv格式的,这个方法上传的文件,其他公司写的算法会用到,但是他们要求传来的文件必须是utf-8编码的,否则会报错,有什么办法能把用户上传的csv文件的编码转换为utf-8吗。
public void uploadCsv(MultipartFile file, String path, String csvName) throws IOException {
      String fileName = file.getOriginalFilename();
      File dest = new File(new File(path+"/data/input").getAbsolutePath()+ "/" + fileName);
      if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
      }
      if(!dest.exists()){
            dest.createNewFile();
      }
      file.transferTo(dest); // 保存文件
    }

绝世好铲 发表于 2020-10-29 15:03

文件上传到后台,读取内容,判断编码,然后在转码 保存文件。
判断编码 可以参考这个https://www.iteye.com/blog/panyongzheng-1849666

Vvvvvoid 发表于 2020-10-29 15:06

bytes = 流.getBytes(' 源编码格式')

String out = new String( bytes , “utf-8”)

绝世好铲 发表于 2020-10-29 15:08

Vvvvvoid 发表于 2020-10-29 15:06
bytes = 流.getBytes(' 源编码格式')

String out = new String( bytes , “utf-8”)

主要不知道客户的 原内容编码, 所以还是要判断一下

Titanic 发表于 2020-10-29 15:40

建议学一下 文件工具:Tika,获取文件真实类型、编码、内容

Titanic 发表于 2020-10-29 15:41

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.tika.Tika;
import org.apache.tika.detect.AutoDetectReader;
import org.apache.tika.exception.TikaException;
import org.apache.tika.language.LanguageIdentifier;

public class Test {
    public static void main(String args[]) throws FileNotFoundException, IOException, TikaException{
      String file="E:\\2013.xls";
      File f = new File(file);
      Tika tika = new Tika();//创建一个Tika类   
      //利用Tika的detect方法检测文件的实际类型
      System.out.println("filetype:"+tika.detect(file));
      //利用Tika的parseToString()方法读取文件的文本内容
      System.out.println("content:"+tika.parseToString(f));
      //利用Tika的AutoDetectReader类检测文件的编码格式
      AutoDetectReader dr = new AutoDetectReader(new FileInputStream(file));
      System.out.println("charset:"+dr.getCharset().name());
      //利用Tika的LanguIdentifier类检测字符串的语言
      LanguageIdentifier identifier = new LanguageIdentifier("this is English");
      System.out.println("language:"+identifier.getLanguage());
    }
}

三木猿 发表于 2020-10-29 16:33

Titanic 发表于 2020-10-29 15:41
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNot ...

很强,很方便

a767421378 发表于 2020-10-29 18:00

Titanic 发表于 2020-10-29 15:41
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNot ...

学习了 谢谢
页: [1]
查看完整版本: (java)有什么办法把MultipartFile上传的文件转为utf-8的编码吗