也许你应该考虑选项C)
将所有重音字符转换为普通UTF-8字符
SoEXPRESSÃO.jpg
-> EXPRESSAO.jpg
我认为这将对您有很大帮助,不仅在编码和文件系统方面,而且在数据库中存储名称/引用。
Update
这是我用来消除口音的函数。我在网上找到了这个解决方案。
function sanitizeName($name)
{
$pattern = array("\'é\'", "\'è\'", "\'ë\'", "\'ê\'", "\'É\'", "\'È\'", "\'Ë\'", "\'Ê\'", "\'á\'", "\'à\'", "\'ä\'", "\'â\'", "\'å\'", "\'Á\'", "\'À\'", "\'Ä\'", "\'Â\'", "\'Å\'", "\'ó\'", "\'ò\'", "\'ö\'", "\'ô\'", "\'Ó\'", "\'Ò\'", "\'Ö\'", "\'Ô\'", "\'í\'", "\'ì\'", "\'ï\'", "\'î\'", "\'Í\'", "\'Ì\'", "\'Ï\'", "\'Î\'", "\'ú\'", "\'ù\'", "\'ü\'", "\'û\'", "\'Ú\'", "\'Ù\'", "\'Ü\'", "\'Û\'", "\'ý\'", "\'ÿ\'", "\'Ý\'", "\'ø\'", "\'Ø\'", "\'œ\'", "\'Œ\'", "\'Æ\'", "\'ç\'", "\'Ç\'");
$replace = array(\'e\', \'e\', \'e\', \'e\', \'E\', \'E\', \'E\', \'E\', \'a\', \'a\', \'a\', \'a\', \'a\', \'A\', \'A\', \'A\', \'A\', \'A\', \'o\', \'o\', \'o\', \'o\', \'O\', \'O\', \'O\', \'O\', \'i\', \'i\', \'i\', \'I\', \'I\', \'I\', \'I\', \'I\', \'u\', \'u\', \'u\', \'u\', \'U\', \'U\', \'U\', \'U\', \'y\', \'y\', \'Y\', \'o\', \'O\', \'a\', \'A\', \'A\', \'c\', \'C\');
$name = preg_replace($pattern, $replace, $name);
return $name;
}
因此,您可以读取所有文件,使用此功能清除名称,并使用新名称保存文件。
最后,我放弃了重音符号,现在我将所有重音符号转换为HTML Equalant。所以Abaeté;
存储为Abaeté
在我的数据库中。