不正确的字符串值 - JOOQ - Java的

问题描述:

我试图上传CSV文件到我的MySQL数据库使用jooq如何我曾经得到以下error.I尝试了各种解决方案的净建议,但不能修复它不正确的字符串值 - JOOQ - Java的

Error: org.jooq.exception.DataAccessException: SQL [insert into `Test`.`testtable` <mydata> Incorrect string value: '\xEF\xBF\xBD15 ...' for column 'colum_Name' at row 1 

我如何我上传的CSV jooq

create.loadInto(Tables.TableName) 
               .onErrorIgnore() 
               .loadCSV(new File("/tmp/uploaded-files/" + fileName), "UTF-8").<fields>.execute(); 

我保证文件是UTF-8然而,当曾经有UTF-8字符的记录未能在DB保存及以上error.I投掷使用

file -i <filename> 
保证

前端AJAX:

$.ajax({ 
    type: "POST", 
    enctype: 'multipart/form-data', 
    url: fileUploadUrl, 
    data: dataforFileUpload, 
    processData: false, 
    contentType: false, 
    cache: false, 
    timeout: 600000, 
    success: function (message) { 
     console.log(message); 
     alert(message); 
     console.log("upload done "+ new Date()); 

    }, 
    error: function (e) { 
     console.log("ERROR : ", e.responseText); 
     alert("ERROR : "+ e.responseText); 

    } 
}); 

我从我的前端通过java读它获取文件休息

InputStream inputStream = listingFilePart.getBody(InputStream.class, null); 

,并传递给jooq

PrintWriter fop = new PrintWriter(new OutputStreamWriter(new FileOutputStream(file, true), StandardCharsets.UTF_8)); 
之前在本地系统递归编写文件

我将我的数据库设置为接受utf-8,并验证了相同的

我发现问题。问题是在ajax调用。 我需要发送字符集enctype

$.ajax({ 
    type: "POST", 
    enctype: 'multipart/form-data;charset=UTF-8', 
    url: fileUploadUrl, 
    data: dataforFileUpload, 
    processData: false, 
    contentType: false, 
    cache: false, 
    timeout: 600000, 
    success: function (message) { 
     console.log(message); 
     alert(message); 
     console.log("upload done "+ new Date()); 

    }, 
    error: function (e) { 
     console.log("ERROR : ", e.responseText); 
     alert("ERROR : "+ e.responseText); 

    } 
});