上传文件夹中包含非英文字符的上传图像命名不正确

时间:2018-05-02 作者:DesVal

当我在media uploader中上载带有非英语字符的图像时,它在wordpress uploads文件夹中的名称转换错误,但数据库中的图像链接具有正确的名称,这导致404错误。

例如,如果我上载了一个文件名为的图像obrázek.jpg, WordPress将其放置在如下上载文件夹:obrázek.jpg

wordpress media uploader中指向图像的链接是正确的:http://localhost/wordpress/wp-content/uploads/obrázek.jpg

我已经在PHP、Apache、MySQL和WordPress配置文件中设置了UTF-8的字符集。

我认为这与Apache有关。你知道怎么解决这个问题吗?

非常感谢。

1 个回复
最合适的回答,由SO网友:kierzniak 整理而成

这是一个众所周知的问题,但由于某种原因,自2013年以来一直没有得到解决

https://core.trac.wordpress.org/ticket/22363

您可以使用sanitize_file_name 滤器

/**
 * Sanitize filename to not brake links with UTF-8 characters
 *
 * WordPress allow to upload files with names containing UTF-8 characters. Some
 * browsers do not handle properly UTF-8 characters in url which causes 404 errors.
 * This filter will remove UTF-8 characters from filename before saving it.
 * 
 * @see https://core.trac.wordpress.org/ticket/22363 Bug request
 *
 * @param string $filename Filename
 *
 * @return string Sanitized filename
 */
function sanitize_filename( $filename ) {
    $file_parts = explode( \'.\', $filename );
    $extension  = array_pop( $file_parts );
    $filename   = sanitize_title( preg_replace( \'/[^A-Za-z0-9\\-]/\', \'\', join( \'.\', $file_parts ) ) );

    return sprintf(\'%s.%s\', $filename, $extension);
}

add_filter( \'sanitize_file_name\', \'sanitize_filename\' );

结束

相关推荐

致命错误:调用未定义的函数RESET_MBSTRING_ENCODING

我在本地主机上尝试访问wp admin时看到以下消息:致命错误:调用Z:\\home\\localhost\\www\\k-gayduk中未定义的函数reset\\u mbstring\\u encoding()。ru \\wp包括\\class http。php第251行然而,我怀疑插件,当它们全部关闭时,什么都没有改变。有什么想法吗?