❶ 在php 中用readfile函數讀取doc文件時顯示的是亂碼
Doc文件當然是亂碼啊。你用記事本打開doc文件就是亂碼。doc文件被word編碼過了的,不可能簡單的就能直讀。
如果想讀自己預設的doc或者用php生成別人能用word打開看的doc文件很簡單。因為doc可以直接寫成html格式
但如果你想用PHP讀別人用word保存的文件,在windows下必須用到php的COM組件word.application。並且伺服器安裝了word程序。這段程序網上很多,我就不再復制了。
如果是linux伺服器的話,方法五花八門,可以找第三方開發的程序比如catword,antiword,裝了openoffice也可以用它的組件
❷ 怎樣在PHP下載文件名中解決亂碼
那麼用Content-Disposition配置下載的文件名,這個也有不少人知曉吧。根本上,下載順序都是這么寫的: 這樣用瀏覽器翻開之後,就能夠下載document.txt。 但是,假設$filename是UTF-8編碼的,有些瀏覽器就無法正常處理了。比如把上面那個順序稍稍改一下: 把順序保管成UTF-8編碼再訪問,IE6下載的文件名就會亂碼。 FF3下下載的文件名就只需「中文」兩個字。Opera 9下一切正常。 輸出的header實踐上是這樣子: Content-Disposition: attachment; filename=中文 文件名.txt本來依照RFC2231的定義,多言語編碼的Content-Disposition應該這么定義: Content-Disposition: attachment; filename*="utf8''%E4%B8%AD%E6%96%87%20%E6%96%87%E4%BB%B6%E5%90%8D.txt"即: filename後面的等號之前要加 * filename的值用單引號分紅三段,區分是字元集(utf8)、言語(空)和urlencode過的文件名。上述方法都無法夠
❸ php文件打開亂碼
PHP文件打開亂碼,大致原因有以下兩點:
文件編碼與編輯器默認編碼不一致,會導致亂碼;建議修改文件編碼格式即可:
文件被加密,也會導致文件亂碼;需要解密才能查看源碼。
❹ 如何在PHP下載文件名中解決亂碼
那麼用Content-Disposition設置下載的文件名,這個也有不少人知道吧。基本上,下載程序都是這么寫的:<?php$filename = 「document.txt」;header(』Content-Type: application/octet-stream』);header(』Content-Disposition: attachment; filename=』 . $filename);PRint 「Hello!」;?>這樣用瀏覽器打開之後,就可以下載document.txt。但是,如果$filename是UTF-8編碼的,有些瀏覽器就無法正常處理了。比如把上面那個程序稍稍改一下:<?php$filename = 「中文 文件名.txt」;header(』Content-Type: application/octet-stream』);header(』Content-Disposition: attachment; filename=』 . $filename);print 「Hello!」;?>把程序保存成UTF-8編碼再訪問,IE6下載的文件名就會亂碼。 FF3下下載的文件名就只有「中文」兩個字。Opera 9下一切正常。輸出的header實際上是這樣子:Content-Disposition: attachment; filename=中文 文件名.txt其實按照RFC2231的定義,多語言編碼的Content-Disposition應該這么定義:Content-Disposition: attachment; filename*=」utf8」%E4%B8%AD%E6%96%87%20%E6%96%87%E4%BB%B6%E5%90%8D.txt」即:filename後面的等號之前要加 * filename的值用單引號分成三段,分別是字元集(utf8)、語言(空)和urlencode過的文件名。 最好加上雙引號,否則文件名中空格後面的部分在Firefox中顯示不出來 注意urlencode的結果與php的urlencode函數結果不太相同,php的urlencode會把空格替換成+,而這里需要替換成%20 經過試驗,發現幾種主流瀏覽器的支持情況如下:IE6 attachment; filename=」<URL編碼之後的UTF-8文件名>」 FF3 attachment; filename=」UTF-8文件名」 attachment; filename*=」utf8」<URL編碼之後的UTF-8文件名>」 Safari3(Win) 貌似不支持?上述方法都不行這樣看來,程序必須得這樣寫才能支持所有主流瀏覽器:<?>
❺ PHP讀取文件亂碼問題
1.fgetc($fp) 取得是單位元組的,中文可能的根據編碼可能有2 3 4位元組,所以不管怎麼輸出肯定都會是亂碼。
解決方法
1.修改php文件的編碼為utf-8, 只有這樣保存到test.txt文件里的文件才會是utf-8 大部分中文就都是按照3個位元組
2.$fp=fopen($filename,"r");
while(($char=fread($fp,3))!==''){
printf("%d.%s",ftell($fp)/3,$char);
}
❻ php遍歷到的文件是中文文件名 顯示為亂碼 該如何解決
window是用的GB2312的編碼,你的php文件應該用的是UTF-8,所以正如你寫的那樣,先要轉換編碼$dir=iconv("utf-8","gb2312",$dir);
但你別忘了,你用的是UTF-8的編碼,所以你第六行寫錯了,把GB2312轉換為UTF-8搞倒了吧
<?php
functionrefresh($dir){
$dir=iconv("utf-8","gb2312",$dir);
if($headle=opendir($dir)){
while($file=readdir($headle)){
$file=iconv("gb2312","utf-8",$file);
if($file!='.'&&$file!='..'){
echo"文件".$file."在文件夾".$dir."下<br/>";
}
}
closedir($headle);
}
}
refresh("D:/AppServ/www/test");
?>
❼ php讀文本文件讀出來的內容是亂碼怎麼辦
看看你PHP文件是什麼編碼,然後用記事本打你的PHP文件,另存為
選擇編碼類型覆蓋。
或者用把讀出來的字元串轉碼。
❽ PHP讀取中文名稱文件亂碼,所以未能讀取出文件內容
編程語言大多不支持中文名字,建議改成英文的名字,如果你覺得不能所有文件都是英文的話,我告訴你一個辦法,上傳的時候對文件重新命名,通常以時間戳來命名。同時把原來的文件名讀取一個寫到資料庫做備注。資料庫有兩個欄位是放文件名的,一個是中文備注也就是原來的中文名。第二個是修改之後的文件名。
❾ php讀取txt文本輸出時亂碼如何解決
$text = file_get_contents($filePath);
//$encodType = mb_detect_encoding($text);
define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));
define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));
define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));
$first2 = substr($text, 0, 2);
$first3 = substr($text, 0, 3);
$first4 = substr($text, 0, 3);
$encodType = "";
if ($first3 == UTF8_BOM)
$encodType = 'UTF-8 BOM';
else if ($first4 == UTF32_BIG_ENDIAN_BOM)
$encodType = 'UTF-32BE';
else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)
$encodType = 'UTF-32LE';
else if ($first2 == UTF16_BIG_ENDIAN_BOM)
$encodType = 'UTF-16BE';
else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)
$encodType = 'UTF-16LE';
//下面的判斷主要還是判斷ANSI編碼的·
if ($encodType == '') {//即默認創建的txt文本-ANSI編碼的
$content = iconv("GBK", "UTF-8", $text);
} else if ($encodType == 'UTF-8 BOM') {//本來就是UTF-8不用轉換
$content = $text;
} else {//其他的格式都轉化為UTF-8就可以了
$content = iconv($encodType, "UTF-8", $text);
}
❿ 高手幫我解決下PHP讀取Excel文件亂碼的問題
不能使用readfile顯示XLS文件,這樣肯定是亂碼。
PHP中顯示EXCEL需要使用一些插件,或者使用COM打開EXCEL進程。更簡單的辦法是在EXCEL裡面另存為,選擇網頁格式,這樣的文件可以直接在網頁顯示。