導航:首頁 > 編程語言 > php獲取文件名亂碼

php獲取文件名亂碼

發布時間:2022-06-10 11:42:08

❶ 在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裡面另存為,選擇網頁格式,這樣的文件可以直接在網頁顯示。

閱讀全文

與php獲取文件名亂碼相關的資料

熱點內容
php數組傳遞給js 瀏覽:639
在世紀的轉折點上pdf 瀏覽:856
變頻製冷壓縮機性能實驗 瀏覽:574
印刷哪個app好 瀏覽:366
安卓手機如何查看連接過的wifi密碼 瀏覽:460
chrpythonord 瀏覽:353
android切片 瀏覽:230
前端js調用php 瀏覽:590
文件夾res是什麼 瀏覽:488
linuxput命令 瀏覽:931
智能仿生演算法模擬退火 瀏覽:903
汽車辦解壓能代辦嗎 瀏覽:12
美林程序員 瀏覽:841
安卓如何開網路 瀏覽:730
宿來app什麼時候上線 瀏覽:764
成都python培訓機構好不好 瀏覽:421
mysql查看配置命令 瀏覽:597
v8編譯cmake 瀏覽:965
app品牌起步階段需要什麼營銷 瀏覽:358
壓縮機製冷劑溫度 瀏覽:930