》》》》》htm文件以默认编码语言显示 急,急,急!!!!!《《《《《《

Trinea 2009-11-23 10:06:01
搞了这么长时间,实在不行了,大牛帮帮忙啊

$fileLink = "<a href=".$linkTemp.str_replace(" ", "%20", $info['文件名'])." target=\"_blank\">";

echo "<tr><td class=\"textLink\" width=\"400\">".$fileLink.$info['标题']."</a></td></tr>";


上面是php源程序的代码,效果是点击$info['标题']超链接就能打开某个文件,该文件是htm文件

现在有一些html文件,charset=windows-1252 保存在linux服务器上,但是在windows下浏览该网站点击链接打开该文件时,浏览器编码方式为简体中文(GB2312),这时候出现很多乱码,当手动将浏览器编码方式改为西欧windows时可以正常显示

我用ftp通过远程下载了该htm文件,用浏览器打开的编码方式默认为西欧windows,可以正常显示

现在我想怎么可以使得当点击该超链接的时候能让浏览器以默认编码方式西欧windows正常显示,其实就是以链接到的htm文件源码中默认的charset显示

在网上找了很多原因,修改apache配置(行不通,应为服务器上不止挂了一个网站,也不是我能控制的,记得服务器默认编码方式为GB2312)

修改源文件,就是我要打开的html文件(也行不通,因为那个文件时需要通过网站后台传上去的,随时可能传不同编码的htm文件)

我自己用<a charset="windows-1252" href=...>试了也没效果

哪位大牛帮忙解决下啊,急,thx

源码中的$info['文件名']和$info['标题']是从数据库中读取出来的,读取之前有
mysql_query("set character set gb2312");
操作,不知道有没有影响,我改了好像也不行的

之前有人用asp写的网站差不多同样的手法,也是相同的文件,就没有出现该问题,点击文件默认是以西欧windows显示的
...全文
375 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Trinea 2009-11-24
  • 打赏
  • 举报
回复
现在还有点小问题,上传的htm文件都是word另存为过来的,那些htm格式是西欧windows就是因为上传文件的电脑word另存为默认是西欧windows,不知道怎么改,有大N有办法吗,我自己电脑试了默认转换后事gb2312的

就是配置电脑使得word另存为htm文件默认为gb2312编码
Trinea 2009-11-24
  • 打赏
  • 举报
回复
非常感谢各位的回答,虽然以上所有的办法都没有把问题解决

我自己用了个最笨的办法,把里面十几个htm文件全部下载了,然后另存为gb2312格式的htm文件,重新往服务器上传了一份,覆盖了原来的就行了

现在还有点小问题,上传的htm文件都是word另存为过来的,那些htm格式是西欧windows就是因为上传文件的电脑word另存为默认是西欧windows,不知道怎么改,有大N有办法吗,我自己电脑试了默认转换后事gb2312的
Siramizu 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 lethe1989 的回复:]记得服务器默认编码方式为GB2312[/Quote]
不应该在服务器上设置强制默认编码,这样很容易导致html等静态页面编码出错,应该取消此设置,并正确设置其它所有网页或程序编码

若按你说的在服务器上开启,相当于强制发送一个Content-Type: text/html; charset=gb2312
而静态html页面没有服务器脚本修改header的能力,再加上有的浏览器会优先取header的编码而不是html meta的编码设置就会导致乱码
zhangyanhe162 2009-11-24
  • 打赏
  • 举报
回复
1.文件的编码(.php或.html)编码
2.头声明:header("content-type:text/html;charset:utf-8");
3.连接数据库时通讯:set names utf8;
4.库表的编码;
5.表中字段的编码;
乱码基本就注意这五个地方,就应该没问题了
foolbirdflyfirst 2009-11-24
  • 打赏
  • 举报
回复
1.搞清楚你的html文件是什么编码,某些编辑器可以方便转变编码,比如editplus,另存一下文件,就知道文件是什么编码.
2.meta标签内指定与文件编码相同的编码
honglei8485 2009-11-24
  • 打赏
  • 举报
回复
统一用UTF-8,主流浏览都会显示正常。。。。
foolbirdflyfirst 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lethe1989 的回复:]
引用 11 楼 foolbirdflyfirst 的回复:
你html是什么编码的数据,meta就指定相应的编码好让浏览器去读。


因为程序是在windows下用dw写的,所以默认都是gb2312,但我改成windows-1252也没用的
[/Quote]
这么说你的文件是gb2312编码,那meta也应该指定成gb2312,windows-1252这样的东西只有ie适用吧?意思就是希望浏览器以win系统的1252号编码去读你那份html文件.
dzxccsu 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lethe1989 的回复:]
引用 11 楼 foolbirdflyfirst 的回复:
你html是什么编码的数据,meta就指定相应的编码好让浏览器去读。


因为程序是在windows下用dw写的,所以默认都是gb2312,但我改成windows-1252也没用的
[/Quote]用header试下,如果还没有用,你可以用EditPlus修改文件的默认编码。
Trinea 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 foolbirdflyfirst 的回复:]
你html是什么编码的数据,meta就指定相应的编码好让浏览器去读。
[/Quote]

因为程序是在windows下用dw写的,所以默认都是gb2312,但我改成windows-1252也没用的
Trinea 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lzz0098 的回复:]
你用的是MYSQL吗,如果是,可能是你建库时用的编码不对造成的, 你可以试改一下数据库的编码看看
[/Quote]

这会有影响吗,我感觉,两个八竿子打不着啊

因为那个文件的内容不是存在数据库里面的,我只是把文件名,一串随机字母和数字保存在数据库的某个字段了
Trinea 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhoupuyue 的回复:]
你把charset的值改成windows-1252试一下嘛!这个就是控制浏览器选择编码的。
[/Quote]

试了,没用
foolbirdflyfirst 2009-11-24
  • 打赏
  • 举报
回复
你html是什么编码的数据,meta就指定相应的编码好让浏览器去读。
lzz0098 2009-11-24
  • 打赏
  • 举报
回复
你用的是MYSQL吗,如果是,可能是你建库时用的编码不对造成的, 你可以试改一下数据库的编码看看
alandy 2009-11-24
  • 打赏
  • 举报
回复
8楼正解,想彻底解决乱码问题,统一设置UTF-8是最佳选择!
CYBEREXP2008 2009-11-24
  • 打赏
  • 举报
回复

mysql_query("set names utf-8");
//在html文件的title标签前面加上
<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">


现在的浏览器基本上都支持utf8,并且很多字符都有utf8编码!!
dzxccsu 2009-11-24
  • 打赏
  • 举报
回复
html控制浏览器编码不一定有效果,试下PHP输出header请求
header('Content-Type:text/html;charset=windows-1252');
阿_布 2009-11-24
  • 打赏
  • 举报
回复
你把charset的值改成windows-1252试一下嘛!这个就是控制浏览器选择编码的。
phnessu4 2009-11-24
  • 打赏
  • 举报
回复
1
网页文本编码 设置为 utf-8
网页内容中添加
<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">

2
php文件编码 设置为 utf-8

3
数据库连接和表结构utf-8
mysql_query("set character set utf-8");

可将utf-8转换为需要的编码(不建议,通用性差)

先试试第一步和第二部,看你说的,不像是数据库的问题,应该是文件保存时的编码不一致

ps:如果不写meta信息的话,浏览器会默认为西欧iso , 中文大多数默认为gbk 依浏览器不同而不同
axiebin 2009-11-23
  • 打赏
  • 举报
回复
PHP语言默认的是“美式英文”;
Trinea 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lwdzcder 的回复:]
就是要设置那些htm文件的编码为windows-1252!
一是用文件头信息
一是直接在htm上设置windows-1252
[/Quote]

两种方法分别怎么用啊???
加载更多回复(3)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧