Привет, я использую приложение Spring mvc для обработки файлов Excel и CSV.Я столкнулся с одной проблемой, заключающейся в том, что для специальных символов, таких как Dééêàâââ, однажды обрабатывая, он конвертирует их в D�������, что неправильно.Однако, когда кодировка файла CSV - UTF8, специальные символы успешно преобразуются.
Часть вызова ajax показана ниже:
$('#fileuploading').fileupload({
url: 'uploadFile',
dataType: 'json',
acceptFileTypes: /(\.|\/)(csv|xlsx)$/i,
maxFileSize: 10000000,
autoUpload: false,
disableImageLoad: true,
disableAudioPreview: true,
disableVideoPreview: true,
disableValidation: false,
disableImageResize: true
})
Мой метод контроллераниже показано:
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody List<JSONResult> uploadFileHandler(
@RequestParam("files") MultipartFile file, HttpServletRequest request) {
logger.info("Starting upload of file: " + file.getOriginalFilename());
JSONResult result = null;
try {
result = uploadFile(file, appUserDTO, result, request);
} catch (IllegalStateException | IOException e) {
logger.error(e.getMessage() + e.getStackTrace());
errorLogService.saveErrorLog("FileUploadController: uploadFileHandler. Error: "+ e.getMessage(), appUserDTO.getUser().getUsrUid());
}
List<JSONResult> array = new ArrayList<>();
array.add(result);
return array;
}
Пожалуйста, найдите ниже метод обработки файла
public CsvFileReader(String path, String delimeter, File file) throws FileNotFoundException {
String line="";
rows = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF8"))) {
while ((line = br.readLine()) != null) {
String[] lineData = line.split(delimeter,-1);
if(SanityCheck.isValid(lineData)){
rows.add(lineData);
}
}
} catch (IOException e) {
logger.error(e.getMessage());
}
}
Кто-нибудь может указать мне правильное направление, как решить эту проблему, пожалуйста?