Encoding 当文件名包含特殊字符时,MAC上没有参数编码
我刚刚发现,在mac上,如果文件名包含特殊字符(如ä/ö/…),URL编码就不起作用 正如您在Chrome请求中看到的,它根本没有编码:Encoding 当文件名包含特殊字符时,MAC上没有参数编码,encoding,fine-uploader,Encoding,Fine Uploader,我刚刚发现,在mac上,如果文件名包含特殊字符(如ä/ö/…),URL编码就不起作用 正如您在Chrome请求中看到的,它根本没有编码: Request Payload ------WebKitFormBoundaryUQC7QNkoqSSO2qui Content-Disposition: form-data; name="datacourse" 25672 ------WebKitFormBoundaryUQC7QNkoqSSO2qui Content-Disposi
Request Payload
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datacourse"
25672
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datafilename"
äääöööüüüßßßß 2.png
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datacontent"
10
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datasemester"
28
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="dataprofessor"
äääöööüüüßßßß 2.png
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="datadescription"
Descriptionäääöööüüüßßßß 2.png
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="qquuid"
d0b29dd3-9b9a-4583-8d5e-9f692f73917d
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="qqtotalfilesize"
34403
------WebKitFormBoundaryUQC7QNkoqSSO2qui
Content-Disposition: form-data; name="qqfile"; filename="äääöööüüüßßßß 2.png"
Content-Type: image/png
------WebKitFormBoundaryUQC7QNkoqSSO2qui--
在Windows PC上,请求如下所示:
Request Payload
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datacourse"
393
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datafilename"
äüüääüßß.jpeg
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datacontent"
10
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datasemester"
28
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="dataprofessor"
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="datadescription"
Description
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="qquuid"
5befc15f-f98c-4f65-b7c6-b07061dd45fa
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="qqtotalfilesize"
261618
------WebKitFormBoundaryaehKL8ARADkQle4D
Content-Disposition: form-data; name="qqfile"; filename="äüüääüßß.jpeg"
Content-Type: image/jpeg
------WebKitFormBoundaryaehKL8ARADkQle4D--
在我使用的PHP端点中
$_REQUEST["datafilename"] = utf8_decode("datafilename"]);
解码formdate。有了WIndows,一切都很好。即使在Mac上,只要文件名不包含特殊字符(如ä/ö/…),也可以
如果有,输出类似于“a?a?a?o?o?u?u?u?ßß”
知道这里出了什么问题吗?这是我可以在php脚本中修复的东西。或者这是优秀的上传者必须做的事情
只要Mac上的文件名是干净的,我就没有这个问题。因此,如果OS=MAC不适合查找:(
谢谢
Daniel参数不是URL编码的。它们已经是多部分编码的。OS X中的Chrome开发工具可能使用Mac OS Roman OS X中的默认编码在开发工具控制台中显示字符。如果无法正确解码服务器端的字符,则可能未包含正确的字符集元标记。例如,您的文档应包含以下标记:
您可以在项目的Github repo问题跟踪器中看到有关此问题的更多信息。您好,但在windows系统上它是编码的。只是在Mac上没有。这里他们说它是编码的:添加metatag不会改变任何事。该博客文章的顶部列出了一个更新,说明从3.3版开始,参数不再是URL编码的y最初是URL编码的,但这不合适。上传者不需要做任何事情来确保这些参数编码正确。如果无法在服务器端解码这些值,并且文档中包含了正确的元标记,则服务器代码有问题。您需要确保服务器端代码正确e总是将参数视为UTF-8编码。在mac上,只要文件名中没有ä,ö,ü,它就可以工作。如果文件名没有ä,ö,ü,它就会中断。如果没有这一点,参数中的这个字符就可以正常工作。感谢您的反馈。正如我之前说过的,我尝试通过执行$_REQUEST[name]=utf8Ădecode($ĂREQUEST[name])来解码php中的每个post参数;你有没有一个例子来说明如何正确地使用它,这样它也可以与mac一起使用?我对PHP不是很了解,但是PHP手册页建议
utf8_decode
可能不适合你的场景。如果字符串已经是UTF-8编码的,并且你的服务器使用UTF-8作为默认编码,为什么你觉得需要对字符串进行解码一串