关于问题:Error querying database. Cause: java.sql.SQLException: Incorrect string value: ‘\xE5\xAD\xA6\xE9\x99\xA2…’ for column ‘file_name’ at row 1
java中上传中文文件名的文件时出现错误: 导致文件名乱码,下载下来后文件名乱码,
解决方法:在文件 application.proprtties中**spring.datasource.url=改为spring.datasource.url=jdbc:mysql://localhost:3306/student?serverTimezone=GMT%2B8&characterEncoding=utf8,在文件上传函数中加入:(加粗)
try {
List items = upload.parseRequest(request);
System.out.println("UploadFile, items size: " + items.size());
for(FileItem item : items) {
if(!item.isFormField()){
file_id = getUUID();
String fullFilePath = fs_dir + File.separator + file_id;
item.write(new File(fullFilePath));
resp.file_id = file_id;
} else {
params.put(item.getFieldName(), item.getString(“UTF-8”));
}
}
然后还是不行,文件名直接不存入数据库:错误提示:Error querying database. Cause: java.sql.SQLException: Incorrect string value: ‘\xE5\xAD\xA6\xE9\x99\xA2…’ for column ‘file_name’ at row 1
通过网上查资料发现,是数据库出了问题:
原因:由于默认情况下,mysql的字符集是latin1(ISO_8859_1),包含库、表、字 段,即使建表时指定编码格式也会失效
解决办法:
1.先查看库、表、表字符字段的编码格式
SHOW CREATE DATABASE kepler; //查看库的字符集
SHOW CREATE TABLE kepler.statis;//查看表的字符集
SHOW FULL COLUMNS FROM kepler.statis; //查看字段编码
2.修改库、表、字符字段的编码
ALTER DATABASE kepler DEFAULT CHARACTER SET utf8; //修改库的字符集
ALTER TABLE kepler.statis CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; //修改表以及字符字段的字符集
(我的是直接修改就可以了)