Witam.

Mam pewien problem z funkcją download, a mianowicie chodzi o znaki specjalne i oczywiście o IE.
W innych przeglądarkach wszystko ładnie zapisuje, znaczy tytuł jest & # 1 2 3; ale to jest jeszcze do zniesienia, ale w IE zapisuje mi taki plik

_192

bez żadnego rozszerzenia, ani czegokolwiek.

Oto kod:
  1. <?php
  2. //polaczenie z baza
  3. $_pobierz_id = $_GET['id'];
  4. $query = "SELECT * FROM `filmy` WHERE `id` = '$_pobierz_id' ";
  5. $result = mysql_query($query);
  6. $row = mysql_fetch_assoc($result);
  7. //polaczenie z baza
  8.  
  9. //wyciagniecie nazwy pliku i zmiana na oczekiwana
  10. $_katalog = "plakaty/".$row['cat'];
  11. $_sciezka_do_pliku = $_katalog."/".$row['file'];
  12. $_extension_pobierz = explode(".", $row['file']);
  13. $_extension = $_extension_pobierz[1];
  14.  
  15. if($row['cat'] == 2) { $_serial = "_".$row['season']."x".$row['episode']; } else { $_serial = ""; }
  16.  
  17. $_nazwa_do_pobrania = str_replace(" ", "_" trim($row['title']))."".$_serial."_pobrane_z_".$row['site_name']."_".$row['id'].".".$_extension;
  18.  
  19. //wyciagniecie nazwy pliku i zmiana na oczekiwana
  20.  
  21. $file = stripslashes($_sciezka_do_pliku);
  22.  
  23. if (! is_file($file))
  24. {
  25. header('HTTP/1.1 404 File Not Found');
  26. die();
  27. }
  28.  
  29. $fname = basename($file);
  30. $fsize = filesize($file);
  31. $ftime = filemtime($file);
  32. $range = $_SERVER['HTTP_RANGE'];
  33.  
  34. $r_start = 0;
  35. $c_length = $fsize;
  36.  
  37. if ($range)
  38. {
  39. $reg = "/bytes=([0-9]+)-([0-9]*)/";
  40. preg_match($reg, $range, $matches);
  41.  
  42. $r_start = (int) $matches[1];
  43. $r_stop = (int) $matches[2];
  44. if ($r_stop < $r_start) $r_stop = $fsize - 1;
  45. $c_length = $r_stop - $r_start + 1;
  46.  
  47. header('HTTP/1.1 206 Partial Content');
  48. header('Content-Range: bytes ' .
  49. $r_start . '-' . $r_stop . '/' . $fsize);
  50. }
  51. else
  52. {
  53. header('HTTP/1.1 200 OK');
  54. }
  55.  
  56. $mm_type="application/octet-stream";
  57.  
  58. header('Last-Modified: ' .
  59. gmdate('D, d M Y H:i:s', $ftime) . ' GMT');
  60. header('Content-Disposition: ' .
  61. 'attachment; filename="' . $_nazwa_do_pobrania . '"');
  62. header('Accept-Ranges: bytes');
  63. header("Content-Type: " . $mm_type);
  64. //header('Content-Type: application/x-unknown');
  65. header("Content-Transfer-Encoding: binary\n");
  66. header('Content-Length: ' . $c_length);
  67.  
  68. if ($fp = fopen($file, 'rb'))
  69. {
  70. flock($fp, 1);
  71. fseek($fp, $r_start);
  72. echo(fread($fp, $c_length));
  73. flock($fp, 3);
  74. fclose($fp);
  75. }
  76. ?>


CO zrobić, żeby rozwiązać ten problem, dokładnie chodzi o plakat do jakiegoś francuskiego filmu À l'intérieur. W bazie danych nazwa ta jest zapisana w ten sposób & # 1 9 2 ; l'intérieur (oczywiście bez tych spacji).

Proszę o pomoc.
POzdrawiam