Php FineUploader 3.1:德国特殊字符
fine uploader 3.1 jquery版本工作正常,直到文件名以德语特殊字符(äöü)开头。我认为这是独立于浏览器和操作系统的。HTML和PHP设置为UTF-8 上传名为“äöütest.txt”的文件时,我会在[Server]/tmp上获得“test.txt”。名为“Xäöütext.txt”的文件将正确传输 我怎样才能解决这个问题Php FineUploader 3.1:德国特殊字符,php,utf-8,fine-uploader,Php,Utf 8,Fine Uploader,fine uploader 3.1 jquery版本工作正常,直到文件名以德语特殊字符(äöü)开头。我认为这是独立于浏览器和操作系统的。HTML和PHP设置为UTF-8 上传名为“äöütest.txt”的文件时,我会在[Server]/tmp上获得“test.txt”。名为“Xäöütext.txt”的文件将正确传输 我怎样才能解决这个问题 我认为在客户端没有什么奇怪的。也许我错了: $('#dlgVorgangNewUpload').fineUploader({ request: {
我认为在客户端没有什么奇怪的。也许我错了:
$('#dlgVorgangNewUpload').fineUploader({
request: { endpoint: '././Objekt.ajax.php' },
button: null,
text: { uploadButton: txt,
cancelButton: 'Abbruch',
failUpload: "Upload fehlgeschlagen"
},
multiple: true,
retry: { showButton: false },
validation: {sizeLimit: 10485760 }, // 10 x 1024 x 1024
debug: true
}).on('submit', function(event, id, filename) {
UploadCounter++;
$(this).fineUploader('setParams', {'todo': 'VorgangUpload'});
}).on('complete', function(event, id, fileName, responseJSON ){
UploadCounter--;
if (responseJSON.success) {
if (UploadCounter == 0) BusyShow("importiere Dateien....");
$.ajax({
// some stuff to store file-inbformation in Database
...
});
} else if (responseJSON['error']){
msgbox (responseJSON['error'],"Fehler:");
}
}).on('cancel', function(event, id, filename) {
UploadCounter--;
});
这是Firebug的输出:
Parameter:
qqfile äöüß test.doc
todo VorgangUpload
Header:
POST /incl/Objekt.ajax.php?todo=VorgangUpload&qqfile=%C3%A4%C3%B6%C3%BC%C3%9F+test.doc HTTP/1.1
Host: xxxxx.xxxxxxxxxxxx.de
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
X-File-Name: %C3%A4%C3%B6%C3%BC%C3%9F%20test.doc
Cache-Control: no-cache
Content-Type: application/octet-stream
X-Mime-Type: application/msword
Referer: https://xxxxxxxxxx.xxxxxxxxx.de/incl/Objekt.php?id=4190
Content-Length: 12800
Cookie: .....
PHPSESSID=.....
Connection: keep-alive
Pragma: no-cache
嗯 壳牌内部:
file -i Objekt.ajax.php
Objekt.ajax.php: text/x-php; charset=utf-8
echo $LANG
de_DE
php文件:
...
header('content-type: text/html; charset=utf-8');
...
我还应该做什么?我不明白为什么这应该是一个服务器问题。在文件名以特殊字符开始之前,使用特殊字符传输文件的工作方式是精细。这对我来说很奇怪。问题可能与您的服务器代码或服务器环境有关。您需要显示有关服务器的更多信息以及服务器代码。好的上传器不是一个因素。确保你的PHP脚本是用UTF-8编码保存的。非常奇怪。我不怎么处理PHP和特殊字符。你在客户端没有做任何奇怪的事情?很好的上传程序不会以任何方式转换文件名或编码。我自己也发现了这一点:如果没有设置区域设置,php/basename()会遇到困难。setlocale(LC_ALL,'de_de');这就是解决办法。解决了的