Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文件名中的Umlauts未正确存储在MySQL数据库中_Javascript_Mysql_Angularjs_Utf 8_Wildfly - Fatal编程技术网

Javascript 文件名中的Umlauts未正确存储在MySQL数据库中

Javascript 文件名中的Umlauts未正确存储在MySQL数据库中,javascript,mysql,angularjs,utf-8,wildfly,Javascript,Mysql,Angularjs,Utf 8,Wildfly,我的web应用程序中有一个文件上载。用户可以通过文件模型指令上载文件。我将文件数据保存在JSON中,并将其发送到Wildfly服务器上的端点。在那里,我将文件数据持久化到MySQL数据库中。在控制台(客户端)中打印文件名时,文件名中没有umlauts错误。在Eclipse控制台中保存文件名和打印文件名之前,我没有看到任何错误。但是,在数据库中,文件名保存错误(例如,testä.jpg变为testa?.jpg)。此外,在将数据发送到视图中的服务器之前,打印带有该文件名的字符串时,该字符串也会显示为

我的web应用程序中有一个文件上载。用户可以通过文件模型指令上载文件。我将文件数据保存在JSON中,并将其发送到Wildfly服务器上的端点。在那里,我将文件数据持久化到MySQL数据库中。在控制台(客户端)中打印文件名时,文件名中没有umlauts错误。在Eclipse控制台中保存文件名和打印文件名之前,我没有看到任何错误。但是,在数据库中,文件名保存错误(例如,testä.jpg变为testa?.jpg)。此外,在将数据发送到视图中的服务器之前,打印带有该文件名的字符串时,该字符串也会显示为testa?.jpg。我已经将
包含在种子页面的标题中。 数据库中的字段
filename
编码为UTF-8,并具有排序规则utf8\u general\u ci。数据库/服务器设置和JVM选项似乎不是问题,因为如果在文本字段中键入UMLAUT,我可以正确保存它们

以下是如何检索文件数据:

$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';

Java不是JavaScript。它被定义为使用UTF-8编码的VARCHAR(255)。噢!然后请检查select和insert语句。请看我上面更新的评论。问题似乎在于读取文件名时已经存在。当我在视图中打印文件名时,umlaut甚至在持久化数据之前就已经显示错误。如果使用ajax将数据以JSON格式发布到服务器,则可以尝试将-->contentType:“application/x-www-form-urlencoded;charset=UTF-8”添加到ajax代码中。或者这个-->beforeSend:function(xhr){xhr.setRequestHeader('Accept',“text/html;charset=utf-8”);},我使用的是angulars
$http
方法