javascript - 文件名中的元音符号未正确存储在 MySQL 数据库中

标签 javascript mysql angularjs utf-8 wildfly

我的网络应用程序中有一个文件上传。用户可以通过 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/

相关文章:

javascript - 我正在尝试从 Bootstrap 创建默认弹出窗口

javascript - 如何在由 C# 中的 .NET WebBrowser 控件托管的页面中调用 JavaScript 方法并将参数传递给该方法?

javascript - 如何使用 JavaScript 在事件触发时将 div 中的元素移动到另一个 div 中?

Java EE 简单登录

javascript - 在 AngularJS 中使用 "this"

javascript - 在 Javascript 中从 React Native 调用 Native Java 方法

mysql - Web2py:如何调用创建表的函数

php - MySQL Join 加 Count 加 Sum

javascript - angularjs ng网格: parent child relations between the rows (hide/show rows)

javascript - 如何观察 RxJS 中的属性变化?