❶ 在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里面另存为,选择网页格式,这样的文件可以直接在网页显示。