Bizim web uygulaması parçası bir iFrame içinde bir sayfa yüklemek ya da indirmek için izin verecek küçük bir Ajax yöntemi vardır.
Biz arama motorları arama sonuçlarının bir demet saklamak ve biz komut bizim bilgi ve arama html içeren dosyayı açar var. Biz üst (bizim bilgi) den gerekmez şeyler dışarı şerit ve sonra biz hizmet ettiğini ya yukarı $ html değişkeni echo'ing veya geçici bir dosyaya koyarak ve indirmek için kapalı bulaşık tarafından.
Sorun: Ben iFrame sayfayı yüklemek ve her şey olduğu için UTF-8 yüklenmiş oluyor. Ben elle dosyayı indirmek Eğer ince ve FF endoding x-GBK olduğunu söylüyor.
Ben boşuna mb_convert_encoding kullanarak denedim. Biz bu sunucu üzerinde PHP4 kullanıyor.
Düşünceler?
EDIT: Bu sürücüler Kodu
f(!isset($_GET['file']) || $_GET['file'] == '')
{
header("location:index.php");
}
$download = false;
if(!isset($_GET['view']) || $_GET['view'] != 'true')
{
$download = true;
}
$file = LOG_PATH . $_GET['file'];
$fileName = end(explode("/", $file));
$fh = fopen($file, "rb");
if(!$fh)
{
echo "There was an error in processing this file. Please retry.";
return;
}
// Open HTML file, rip out garbage at top, inject "http://google.com" before all "images/"
$html = fread($fh, filesize($file));
fclose($fh);
// Need to trim off our headers
$htmlArr = explode("<!", $html, 2);
$htmlArr[1] = "<!" . $htmlArr[1];
if(strstr($file, "google"))
{
$html = str_replace('src="/images/', 'src="http://google.com/images/', $htmlArr[1]);
$html = str_replace('href="/', 'href="http://google.com/', $html);
}
else if(strstr($file, "/msn/"))
{
$html = str_replace('src="/images/', 'src="http://bing.com/images/', $htmlArr[1]);
$html = str_replace('href="/', 'href="http://www.bing.com/', $html);
}
else
{
$html = $htmlArr[1];
}
if(strstr($file, "baidu"))
{
$html = mb_convert_encoding($html, 'utf-8'); // Does not work
}
if($download)
{
// Write to temporary file
$fh = fopen("/tmp/" . $fileName, 'w+');
fwrite($fh, $html);
fclose($fh);
$fh = fopen("/tmp/" . $fileName, "rb");
header('Content-type: application/force-download;');
header("Content-Type: text/html;");
header('Content-Disposition: attachment; filename="' . $fileName . '"');
fpassthru($fh);
fclose($fh);
unlink("/tmp/" . $fileName);
}
else // AJAX Call
{
echo $html;
}