[原创]解决apache显示乱码的方法

发表于:2007-05-25来源:作者:点击数: 标签:
作者:南非蜘蛛zhedou@sohu.com 个人主页:http://www.douzhe.com 转载请保留作者信息 今天安装httpd-2.0.43.tar.gz,我这个人没有什么爱好,就是爱用一个新软件,安装这里略过. 当把原来的程序copy到安装好的apache目录,然后启动目录发现英文可以显示,中文是乱码

作者:南非蜘蛛 zhedou@sohu.com 
个人主页:http://www.douzhe.com
转载请保留作者信息

今天安装httpd-2.0.43.tar.gz,我这个人没有什么爱好,就是爱用一个新软件,安装这里略过.
  
  当把原来的程序copy到安装好的apache目录,然后启动目录发现英文可以显示,中文是乱码,当把IE工具栏的查看-->编码设置成简体中文,可以正常显示中文,但点击连接,其它页面还是乱码,关掉IE,从新启动IE,发现也是乱码,晕ing.........网上四处一顿乱搜
有人说网页里要加
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
这句话,我的每个网页都有这句话,肯定不是这个问题,还有人说
[color=red:af2f703089]方法一:[/color:af2f703089]
AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset off
ok,搞定,就是这个问题,大家以后出现乱码可以试试这个方法

好像这个方法也可以
[color=red:af2f703089]方法二:[/color:af2f703089]
AddDefaultCharset GB2312 
大家试试告诉我结果吧

然后从起apache服务,一定要从起

color=red]方法三:[/color]
kuu的程序解决apache中文文件名问题--大家试试
前段时间好象有人问过这个问题:就是在apache目录中不放index文件而由apache自动生成索引,中文文件名保存时不正常的问题。 
学校开始放暑假有空,想出个解决办法,希望能有点用。 
关于设置IE中的UTF-8,我想可以编一段脚本更改注册表实现(不过那样会不会被当作病毒),也可以在页面上提醒用户更改。 

程序附后: 
<? 
/************************************************************************/ 
/* 显示文件索引 */ 
/* v0.1 2002年7月19日 */ 
/* */ 
/* 浙江建设职业技术学院 王进勇 kuu@163.net */ 
/************************************************************************/ 
//未解决的问题:无效链接问题,文件大小显示和排序 


//要求不显示的文件名 
$file_hide=array(".",basename($PHP_SELF), //程序名称 
".htaclearcase/" target="_blank" >ccess", 
); 
//文件扩展名对应的图标 
$file_map=array( 
"d ir"=>"folder.gif", 
"htm"=>"text.gif", 
"html"=>"text.gif", 
"txt"=>"text.gif", 
"png"=>"image2.gif", 
"gif"=>"image2.gif", 
"jpg"=>"image2.gif", 
"exe"=>"binary.gif", 
"com"=>"binary.gif", 
"bin"=>"binary.gif", 
"zip"=>"compressed.gif", 
"gz"=>"compressed.gif", 
"mp3"=>"sound2.gif", 
"ra"=>"sound2.gif", 
"pdf"=>"layout.gif", 

); 

//读入文件名、大小、时间 
$handle=opendir('.'); 
while ($file = readdir($handle)) { 
//处理“上一级目录” 
if(".."==$file){ 
$file_name_back="上一级目录"; 
$file_icon_back="back.gif"; 
$file_link_back="../"; 
$file_size_back="-"; 
$file_time_back=date("F j Y h:i:s A",filemtime($file)); 
continue; 

//处理不显示的文件名 
for($j=0;$j<count($file_hide);$j++) 
if($file_hide[$j]==$file) $file="."; 
if("."==$file) continue; 
//处理其它文件: 取文件名、类型、大小、时间、扩展名、链接文件实际指向 
$file_name=$file; //名称 
$file_size=("dir"==filetype($file)) ? "-" : filesize($file); //大小 
$file_time=filemtime($file); //时间 
$file_type=filetype($file); //类型(目录,文件,链接等) 
//链接的目标为目录则设定其类型为目录 
if("link"==filetype($file) && "dir"==filetype(readlink($file))  
$file_type="dir"; 
//目录的链接名后加/,非目录不加;目录的扩展名为d ir,非目录取文件扩展名 
if("dir"==filetype($file)){ 
$file_link="$file/"; 
$file_ext="d ir"; 
}else{ 
$file_link="$file"; 
$file_ext=(strrpos($file,".")) ? substr($file,strrpos($file,".")+1) : "";//扩展名 
$file_ext=strtolower($file_ext); //转换成小写 

//根据扩展名取图标文件名 
$file_icon=$file_map[ $file_ext ]; 
if(""==$file_icon) $file_icon="unknown.gif"; 
//转存到数组中 
$file_list[0][]=$file_name; //名称 
$file_list[1][]=$file_size; //大小 
$file_list[2][]=$file_time; //时间 
$file_list[3][]=$file_type; //类型(目录,文件,链接等) 
$file_list[4][]=$file_link; //链接名 
$file_list[5][]=$file_ext; //扩展名 
$file_list[6][]=$file_icon; //图标名 

closedir($handle); 

//列头(可排序) 
$title_name="<A HREF='$PHP_SELF?sort=NameA'>名称</A>"; 
$title_size="<A HREF='$PHP_SELF?sort=SizeA'>大小</A>"; 
$title_time="<A HREF='$PHP_SELF?sort=TimeA'>修改时间</A>"; 
$title_memo="<A HREF='$PHP_SELF?sort=MemoA'>备注</A>"; 
//默认根据排序依据列 
$file_list_disp=$file_list[0]; 

//控制根据参数排序 
switch ($sort) { 
case "NameA": 
asort($file_list[0],SORT_STRING); //根据名称顺序 
$title_name="<A HREF='$PHP_SELF?sort=NameB'>名称</A>"; 
$file_list_disp=$file_list[0]; 
break; 
case "NameB": 
arsort($file_list[0],SORT_STRING); //根据名称降序 
$title_name="<A HREF='$PHP_SELF?sort=NameA'>名称</A>"; 
$file_list_disp=$file_list[0]; 
break; 
case "SizeA": 
asort($file_list[1],SORT_NUMERIC); //根据大小顺序 
$title_size="<A HREF='$PHP_SELF?sort=SizeB'>大小</A>"; 
$file_list_disp=$file_list[1]; 
break; 
case "SizeB": 
arsort($file_list[1],SORT_NUMERIC); //根据大小降序 
$title_size="<A HREF='$PHP_SELF?sort=SizeA'>大小</A>"; 
$file_list_disp=$file_list[1]; 
break; 
case "TimeA": 
asort($file_list[2],SORT_NUMERIC); //根据时间顺序 
$title_time="<A HREF='$PHP_SELF?sort=TimeB'>修改时间</A>"; 
$file_list_disp=$file_list[2]; 
break; 
case "TimeB": 
arsort($file_list[2],SORT_NUMERIC); //根据时间降序 
$title_time="<A HREF='$PHP_SELF?sort=TimeA'>修改时间</A>"; 
$file_list_disp=$file_list[2]; 
break; 
default: 
//默认不排序 

?> 

<!-- 以下为HTML文件头 --> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<HTML> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<HEAD> 
<TITLE>Index of <?= dirname($PHP_SELF) ?></TITLE> 
</HEAD> 
<style type="text/css"> 
<!-- 
table {font-family: "宋体"; font-size: 13px} 
--> 
</style> 
<BODY> 
<H1>Index of <?= dirname($PHP_SELF) ?></H1> 
<!-- 表头开始 --> 
<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td width="5%" align="center">&</td> 
<td width="30%" align="left">&<?=$title_name?></td> 
<td width="8%" align="right"><?=$title_size?></td> 
<td width="32%" align="center"><?=$title_time?></td> 
<td width="30%" align="center"><?=$title_memo?></td> 
</tr> 
<tr> 
<td colspan="5"> 
<hr size="2"> 
</td> 
</tr> 
<!-- 表头结束 --> 

<? 
//"上一级目录"固定显示在第一行 
echo "<tr height=25>\n"; 
echo "<td><IMG SRC=\"/icons/".$file_icon_back."\" ALT=\"[".$file_link_back."]\"></td>"; 
echo "<td><A HREF=\"".$file_link_back."\">".$file_name_back."</A>"."</td>"; 
echo "<td align=right>".$file_size_back."</td>"; 
echo "<td align=left>&&&".$file_time_back."</td>"; 
echo "<td>&</td>"; 
echo "\n</tr>\n"; 

//显示其它文件行 
//$file_list_disp=$file_list[0]; 
//arsort($file_list[0]); 
while (list($i) = each($file_list_disp)) { 
echo "<tr height=25>\n"; 
echo "<td><IMG SRC=\"/icons/".$file_list[6][$i]."\" ALT=\"[".$file_list[5][$i]."]\"></td>"; 
echo "<td><A HREF=\"".$file_list[4][$i]."\">".$file_list[0][$i]."</A>"."</td>"; 
echo "<td align=right>".$file_list[1][$i]."</td>"; 
echo "<td align=left>&&&".date("F j Y h:i:s A",$file_list[2][$i])."</td>"; 
echo "<td>&</td>"; 
echo "\n</tr>\n"; 


?> 
<!-- 显示页脚信息 --> 
</table> 
<HR> 
<?=$SERVER_SIGNATURE?> 
</BODY></HTML>

 feijin 回复于:2003-06-16 23:13:41
修改conf文件 ,方法二最好用,也最简单
AddDefaultCharset GB2312

 cww2 回复于:2003-06-17 08:33:34
我的Apache 是Oracle9.2自带的,版本是1.3。
照你们说的做了,怎么都不行,太怪了。
方法一我试过,但我的httpd.conf里没有AddDefaultCharset ISO-8859-1此项,我是手工加了
AddDefaultCharset off 
方法二:
AddDefaultCharset GB2312 

这两种方法都试过,以前是用的ora_web4.0.8可以,改成Apache就不行了。 ops:

 yifengling0 回复于:2003-07-14 17:13:10
我想在一个服务器里,即能正确显示日文,又能显示中文。怎么办呀?
缺省字符集只有一个!

 frankc 回复于:2003-07-22 15:24:53
我用的是PHP+mysql空间,没法更改配置,可以在.php或htm的脚本中实现吗?

原文转自:http://www.ltesting.net