我的网络应用程序中有一个文件上传。用户可以通过 file-model 指令上传文件。我将文件数据保存在 JSON 中并将其发送到 Wildfly 服务器上的端点。我将文件数据保存在 MySQL 数据库中。在控制台(客户端)中打印文件名时,文件名中没有变音错误。另外,在保留文件名并在 Eclipse 控制台中打印文件名之前,我没有看到任何错误。但是,在数据库中,文件名保存错误(例如 testä.jpg 变为 testa?.jpg)。此外,在 View 中在将数据发送到服务器之前打印具有该文件名的字符串时,它也会显示为 testa?.jpg。我包括<meta charset="utf-8">
已经在种子页面的头部了。
领域filename
数据库中的编码为 UTF-8,并具有排序规则 utf8_general_ci。数据库/服务器设置和 JVM 选项似乎不是问题,因为如果在文本字段中键入变音符号,我可以正确保存它们。
以下是检索文件数据的方式:
$scope.submit = function () {
$scope.employeePhoto = {};
var f = document.getElementById('file').files[0];
r = new FileReader();
r.onloadend = function(e){
var data = e.target.result;
$scope.employeePhoto.photoContent = uint8ArrayToArray(new Uint8Array(data));
$scope.employeePhoto.fileName = $scope.UploadFile.name;
}
// http request to the endpoint
}
问题可能是文件名已经错误地存储在 $scope.UploadFile.name
中。变量,但我不知道如何修复它。
最佳答案
请检查 MySQL 中的列是否定义为 VARCHAR(n) CHARSET utf8。从你的解释来看,这应该是我能想到的唯一问题。
此外,检查您的 select 和 insert 语句是否使用 N 来选择列。像这样:
SELECT N'some text';
关于javascript - 文件名中的元音符号未正确存储在 MySQL 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42860647/