为什么当我上传一张带有国际字符的图片,比如:ábc。jpg到WordPress,文件名显示为:bc。jpg?
相反,它的标题和URL是正确的。请查看此屏幕截图:http://d.pr/i/1oFG
这是虫子吗?
附言:请注意,这种行为只发生在国际字符是其名称第一个字母的图像上,而不是出现在名称中间的图像上。
为什么当我上传一张带有国际字符的图片,比如:ábc。jpg到WordPress,文件名显示为:bc。jpg?
相反,它的标题和URL是正确的。请查看此屏幕截图:http://d.pr/i/1oFG
这是虫子吗?
附言:请注意,这种行为只发生在国际字符是其名称第一个字母的图像上,而不是出现在名称中间的图像上。
这有点奇怪,我无法再现你的错误。也许这与您上载的文件名/文件系统的不同字符编码有关。处理文件上传时,WordPress会清理文件名以删除空格和其他一些不需要的字符。该消毒由以下人员执行sanitize_file_name
上载完成时。第一部分(和整体)如下所示:
$filename_raw = $filename;
$special_chars = array("?", "[", "]", "/", "\\\\", "=", "<", ">", ":", ";", ",", "\'", "\\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", chr(0));
$special_chars = apply_filters(\'sanitize_file_name_chars\', $special_chars, $filename_raw);
$filename = str_replace($special_chars, \'\', $filename);
$filename = preg_replace(\'/[\\s-]+/\', \'-\', $filename);
$filename = trim($filename, \'.-_\');
正如您所看到的阵列$special_chars
包含严肃的口音,但不包含尖锐的口音。我看不出为什么这个代码会过滤掉á
字符(除非您安装了一些连接到sanitize_file_name_chars
或sanitize_file_name
). 我可以想象á有不止一个unicode表示形式(例如瑞典字符åäö),或者您正在上载的文件名是使用ISO-8859-1编码的,因此请尝试隔离您的案例中使用的文件名,如果可能的话,尝试上载几个不同编码的文件名。此外,尝试将此问题与服务器或客户端问题隔离开来,即将同一文件上载到不同的服务器,以了解其在不同系统中的行为是否相同。This image, 例如,在OS X/MAMP上运行的我的clean WP安装中,上传就可以了。我的上传文件夹中有大量文件。有没有办法识别那些没有链接到任何帖子的人?注意:其中一些文件是手动复制到uploads文件夹,而不是通过“媒体库”