Принудительная загрузка файлов с иностранными символами
Как я могу принудительно загрузить файлы, имя файла которых содержит больше символов, чем английский, например, шведский, норвежский, как ö ä å . Он отлично работает, если файл не содержит символов, но если имя файла содержит шведские символы.
Ниже приведен код, который я использую для открытия файлов.
$file_id = $_GET['f'];
$sql = " SELECT * ".
" FROM attachment ".
" WHERE attachment_id = ".$file_id." ".
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$filename = $row['filename'];
$USER_ID = $row['user_id'];
$DIRECTORY_ID = $row['directory_id'];
$target_path = "upload/".$USER_ID."/".$DIRECTORY_ID."/";
// And the function is :
function Download($path, $speed = null)
{
if (is_file($path) === true)
{
$file = @fopen($path, 'rb');
$speed = (isset($speed) === true) ? round($speed * 1024) : 524288;
if (is_resource($file) === true)
{
set_time_limit(0);
ignore_user_abort(false);
while (ob_get_level() > 0)
{
ob_end_clean();
}
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Type: application/octet-stream');
header('Content-Length: ' . sprintf('%u', filesize($path)));
header('Content-Disposition: attachment; filename="' . basename($path) . '"');
header('Content-Transfer-Encoding: binary');
while (feof($file) !== true)
{
echo fread($file, $speed);
while (ob_get_level() > 0)
{
ob_end_flush();
}
flush();
sleep(1);
}
fclose($file);
}
exit();
}
return false;
}
Download($target_path.$filename);
Я использовал:
$filename = urlencode($filename);
$filename = htmlentities($filename, ENT_QUOTES, "UTF-8");
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
а также
$path = iconv('UTF-8', 'ASCII//TRANSLIT', $path)
Но ничего не работает. Я хочу заранее поблагодарить вас, и любая помощь, которую вы можете оказать, будет принята с благодарностью. Джонас.
1 ответ
Использовать этот:
<?php
header('Content-Type: text/html; charset=utf-8');
?>
и убедитесь, что вы сохранили свой исходный файл PHP как utf-8.