我在Windows IIS上使用PHP 5.6。当通过ckeditor创建链接并上载该链接的文件时,服务器上的文件名不包含特殊字符,如:。问题仅在通过ckeditor上载文件时出现。将文本上载到数据库时,编码并没有问题。我如何让ckeditor告诉服务器正确的编码,或者包括我请求的编码,或者我需要做的任何事情来让它工作?这种PHP编码是一场噩梦!
我用以下方法修复了它:
iconv("utf-8", "cp1250", $_FILES['upload']['name'])
但是,我是否无法告诉PHP将所有内容都当作UTF-8来处理?我尝试过在php中设置关于编码和代码页的每一个设置。ini转换为UTF-8,但没有帮助。这看起来确实前后矛盾,而且很挑剔。有没有PHP专家能告诉我解决这个问题的简单方法?
以下是上载标题:
POST https://nsdmup-a.hr/cms/news_fileupload.php?CKEditor=fullText&CKEditorFuncNum=1&langCode=en HTTP/1.1
Host: nsdmup-a.hr
Connection: keep-alive
Content-Length: 1069214
Cache-Control: max-age=0
Origin: https://nsdmup-a.hr
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarysc0FA4jsjDe2Z4s8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: https://nsdmup-a.hr/cms/news_add.php?editId=293
Accept-Encoding: gzip, deflate, br
Accept-Language: hr-HR,hr;q=0.9,en-US;q=0.8,en;q=0.7,sr;q=0.6,bs;q=0.5,ja;q=0.4
Cookie: PHPSESSID=45iuc1r017sb75bte57dl0te71
------WebKitFormBoundarysc0FA4jsjDe2Z4s8
Content-Disposition: form-data; name="upload"; filename="511-D-022-2018. dopis ministru - zapšljavanje namještenika2.pdf"
Content-Type: application/pdf
这是他写入磁盘的文件名:
“511-D-022-2018。dopis ministru-zapljavanje namjetenika2.pdf”