PHP: Dateinamen für Windows / CIFS

Ich weiß nicht, ob das nun der Weisheit letzter Rat ist, aber bei mir hat er mit Hilfe dieser kleinen Funktion sauber auf CIFS (SMB 1) geschrieben. Vielleicht hilft es ja den Einen oder Anderen etwas.

/**
 * tranform the filename inclusive path to the cifs filename charset
 *
 * @param string $filename;
 * @return string
 */
function cifs_file_charset ( $filename )
{
   if ( !is_string($filename) )
   {
      exit('wrong parameter for $filename');
   }

   /* first the lower bit encodings, otherwise the higher bit encoding will be
    * detected and the next step will return strange results or nothing
    * mb_convert_encoding without the three parameter will fail as well
    * Bug: If the real encoding of the string is utf-8, it detect the ISO-encoding first
    *   (PHP 5.3.0)
    */
   $encoding = mb_detect_encoding($filename, 'iso-8859-1, iso-8859-15, utf-8, auto', true);
   /* CP1252 seems to be the right file charset für CIFS (aka SMB 1) */
   $filename = mb_convert_encoding($filename, 'CP1252', $encoding);

   return $filename;
}