已经设置<meta http-equiv="Content-Type" content="text/html; charset="gb2312" />第一个文件,里面的内容是:账号,密码,邮箱。能正常显示。第二个文件,里面的内容是:您的迅雷账号,用户名,密码,却不能正确显示。显示为:锘挎偍鐨勮繀闆峰笎鍙凤細 
 
鐢ㄦ埛鍚嶏細  瀵嗙爜。其他的文件也类似。有些文件上传后能正确显示内容,有些却却不能正确显示。找不到原因。囧!附代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset="gb2312" />
<title>Uploading...</title>
</head>
<body>
<h1>Uploading file...</h1>
<?php
if($_FILES['userfile']['error']>0)
{
echo 'Problem:';
switch($_FILES['userfile']['error'])
{
case 1:echo 'File exceeded upload_max_filesize';
break;
case 2:echo 'File exceeded max_file_size';
break;
case 3:echo 'File only partially uploaded';
break;
case 4:echo 'No file uploaded';
break;
case 6:echo 'Cannot upload file: No temp directory specified';
break;
case 7:echo 'Upload failed: Cannot write to disk';
break;
}
exit;
}
if($_FILES['userfile']['type']!='text/plain')
{
echo 'Problem: file is not plain text';
exit;
}
$upfile='D:/xampp/htdocs/uploads/'.$_FILES['userfile']['name'];
$upfile= iconv('utf-8', 'gb2312', $upfile);
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
if(!move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile))
{
echo 'Problem: Could not move file to destination directory';
exit;
}
}else{
echo 'Problem:Possible file upload attack.Filename:';
echo $_FILES['userfile']['name'];
exit;
}echo 'File uploaded successfully<br><br>';$contents=file_get_contents($upfile);$contents=strip_tags($contents);file_put_contents($upfile,$contents);echo '<p>Preview of uploaded file contents:<br/><hr/>';
echo nl2br($contents);
echo '<br/><hr/>';
?>
</body>
</html>

解决方案 »

  1.   

    涉及文件名就很麻烦,目前php5(好像php6也是)都不能正确操作多字节的文件名和路径
      

  2.   


    文件名能够正确显示。
    只是某些txt文件里面的中文不能在浏览器正确显示,
    而某些txt文件里面的中文又可以在浏览器正确显示。
      

  3.   


    txt也有自己的编码的,如果跟你要显示的编码不同就自然会是乱码
      

  4.   


    哈哈。。解决了。。谢啦!
    分享下解决办法用记事本打开所需的TXT文件→文件→另存为→在“文件名”、“保存类型”下面有一个“编码”,选择“ANSI”。