ff 下运行php程序,html页面左上出现“锘� ”乱码。在ie下不出现

ff 下运行php程序,html页面左上出现“锘� ”乱码。在ie下不出现,第1张

这是因为你的文件是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乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9385228.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存