web-dev-qa-db-fra.com

Bug lors du téléchargement de photos avec des caractères internationaux?

Pourquoi, lorsque je télécharge une image avec son nom avec des caractères internationaux, tels que: ábc.jpg sur WordPress, le nom du fichier apparaît sous la forme: bc.jpg?

Au lieu de cela, son titre et son URL sont corrects. S'il vous plaît, voyez cette capture d'écran: http://d.pr/i/1oFG

Est-ce un bug?

P/S: Veuillez noter que ce problème ne se produit qu'avec des images dont le caractère international est la PREMIÈRE lettre de son nom, et NON lorsqu'elles sont au milieu du nom.

2
vicmarto

C'est un peu étrange et je ne peux pas reproduire votre erreur. Peut-être cela a-t-il quelque chose à voir avec différents encodages de caractères du nom de fichier/système de fichiers que vous téléchargez depuis ou vers. Lors de la gestion des téléchargements de fichiers, WordPress supprime le nom du fichier pour supprimer les espaces et certains autres caractères indésirables. Cette désinfection est effectuée par sanitize_file_name à la fin du téléchargement. La première partie (et intégrale) qui ressemble à ceci:

$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, '.-_');

Comme vous pouvez le constater, le tableau $special_chars contient l'accent Grave, mais pas l'accent aigu. Je ne vois aucune raison pour laquelle ce code filtrerait le caractère á (à moins qu'un plug-in installé soit raccordé à sanitize_file_name_chars ou sanitize_file_name). J'imagine qu'il y a plus d'une représentation unicode de á (comme c'est le cas avec les caractères suédois åäö par exemple), ou peut-être que le nom de fichier que vous téléchargez est codé avec ISO-8859-1, essayez donc d'isoler ce qui est utilisé Dans votre cas, essayez d’en télécharger si possible avec quelques noms de fichiers encodés différemment. Essayez également d’isoler ce problème sur un problème de serveur ou de client, c’est-à-dire de télécharger le même fichier sur différents serveurs pour déterminer s’il se comporte de la même manière sur différents systèmes. Cette image , par exemple, est très bien téléchargée lors de mon propre nettoyage WP installé sous OS X/MAMP.

1
Simon