
这是因为你的文件是UTF-8的,对不对?
记事本等程序在保存UTF-8的文件时候,会在最前面加上一个特殊的编码,这会造成显示乱码。
EditPlus等软件可以保存为无BOM的UTF-8,就能避免这样的问题。
PHP文件打开乱码,大致原因有以下两点:
文件编码与编辑器默认编码不一致,会导致乱码;建议修改文件编码格式即可:
文件被加密,也会导致文件乱码;需要解密才能查看源码。
出错的原因在于你的PHP程序输出的编码和XML文件的编码不一致造成的!
想使用utf-8编码的话,对于你的程序,修改方法如下:
一把两个gb2312改为utf-8
二在xml文件上点右链,选择用记事本打开,另存为,编码由ansi改为utf8,覆盖保存。
搞定
通过把Content Type设置为application/octet stream 可以把动态生成的内容当作文件来下载 相信这个大家都会 那么用Content Disposition设置下载的文件名 这个也有不少人知道吧 基本上 下载程序都是这么写的
header( Content Disposition: attachment; filename= $filename);print Hello! ;>这样用浏览器打开之后 就可以下载document txt
但是 如果$filename是UTF 编码的 有些浏览器就无法正常处理了 比如把上面那个程序稍稍改一下
header( Content Disposition: attachment; filename= $filename);print Hello! ;>把程序保存成UTF 编码再访问 IE 下载的文件名就会乱码 FF 下下载的文件名就只有 中文 两个字 Opera 下一切正常
输出的header实际上是这样子
Content Disposition: attachment; filename=中文 文件名 txt
其实按照RFC 的定义 多语言编码的Content Disposition应该这么定义
Content Disposition: attachment; filename= utf %E %B %AD%E % % % %E % % %E %BB%B %E % % D txt即
filename后面的等号之前要加 filename的值用单引号分成三段 分别是字符集(utf ) 语言(空)和urlencode过的文件名 最好加上双引号 否则文件名中空格后面的部分在Firefox中显示不出来 注意urlencode的结果与php的urlencode函数结果不太相同 php的urlencode会把空格替换成+ 而这里需要替换成%
经过试验 发现几种主流浏览器的支持情况如下
IE attachment; filename=
FF attachment; filename= UTF 文件名
attachment; filename= utf
O attachment; filename= UTF 文件名
Safari (Win) 貌似不支持?上述方法都不行
这样看来 程序必须得这样写才能支持所有主流浏览器
$encoded_filename = urlencode($filename);$encoded_filename = str_replace( + %
$encoded_filename);header( Content Type: application/octet stream );
if (preg_match( /MSIE/ $ua)) { header( Content Disposition: attachment;
filename= $encoded_filename );} else if (preg_match( /Firefox/ $ua))
{ header( Content Disposition: attachment; filename= utf \ \ $filename );}
else { header( Content Disposition: attachment; filename= $filename );}print ABC ;>
lishixinzhi/Article/program/PHP/201311/21454
1fgetc($fp) 取得是单字节的,中文可能的根据编码可能有2 3 4字节,所以不管怎么输出肯定都会是乱码。
解决方法
1修改php文件的编码为utf-8, 只有这样保存到testtxt文件里的文件才会是utf-8 大部分中文就都是按照3个字节
2$fp=fopen($filename,"r");
while(($char=fread($fp,3))!==''){
printf("%d%s",ftell($fp)/3,$char);
}
看你的编辑器默认是什么编码的
然后在php文件最开头写上:
<php
header('Content-type: text/html; charset=UTF8'); // UTF8不行改成GBK试试,与你保存的格式匹配
>
以上就是关于ff 下运行php程序,html页面左上出现“锘� ”乱码。在ie下不出现全部的内容,包括:ff 下运行php程序,html页面左上出现“锘� ”乱码。在ie下不出现、php文件打开乱码、php xml乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)