【问题标题】:CKEditor file upload with wrong file encoding (not UTF-8)CKEditor 文件上传错误的文件编码(不是 UTF-8)
【发布时间】:2018-08-05 21:58:03
【问题描述】:

我在 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 - zapšljavanje namještenika2.pdf”

【问题讨论】:

    标签: php file-upload encoding ckeditor


    【解决方案1】:

    根据我的经验,这是 Windows 和所有 PHP 版本直到 v7.0 的问题

    所以,要么继续使用iconv 函数,要么将 PHP 升级到至少 v7.1 (changelog regarding Windows)

    您还可以创建一个具有如下内容的辅助函数:

    if (version_compare(phpversion(), '7.1.0', '<') and strtoupper(substr(php_uname('s'), 0, 3)) === 'WIN')
    {
        // Windows and PHP 7.0 or less. Use iconv
        return iconv('utf-8', 'cp1250', $filename);
    }
    else
    {
        // Should be all good
        return $filename;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 2018-06-05
      • 2013-10-22
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多