一上传,到了文件夹内中文就变乱码了!! 跪求大神指点。
先上表单页面的代码
<form action="upload_file.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
          <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
            <tr>
              <td height="40" align="right">资料名称:</td>
              <td><label>
                <input type="text" name="title" id="title" />
              </label></td>
            </tr>
            <tr>
              <td width="148" height="40" align="right">上传资料:</td>
              <td width="352"><label for="file"></label>
<input type="file" name="file" id="file" /> 
<br /></td>
            </tr>
            <tr>
              <td height="35" align="right">上传时间:</td>
              <td><input name="sj" type="text" id="sj" value="<?php echo $timer;?>" /></td>
            </tr>
            <tr>
              <td height="35" align="right">&nbsp;</td>
              <td><label>
                <input type="submit" name="submit" value="提交" />
                <input name="key" type="hidden" id="key" value="add" />
              </label></td>
            </tr>
          </table>
                </form>
然后到我的上传系统代码<?php  $key=@$_REQUEST["key"];
  $title=@$_REQUEST["title"];
 
  $sj=@$_REQUEST["sj"];
  
 
  
  if($key=="add")
{$sql = "SELECT * FROM ziliao where title='".$title."' ";
$result = mysql_query($sql);
if($cs= mysql_fetch_array($result))//若记录集里面存在接收到得用户名及密码
{
alertgo('此文件名已存在,请更改名字再上传',"loadadd.php");
exit();
}/*上传器代码*/if ($_FILES["file"]["size"] < 1000000)
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "文件名: " . $_FILES["file"]["name"] . "<br />";
    echo "文件类型: " . $_FILES["file"]["type"] . "<br />";
    echo "文件大小: " . (round($_FILES["file"]["size"] / 1024,2)) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . "<span style='color:#ff3300'>文件已存在,请重新上传</span> ";
  alertgo('文件已存在,请重新上传',"loadadd.php");
  exit();
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "文件存放在: " . "/admin/load/upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "文件容量不能大于1M";
  }/*上传器代码*/

  $wjqm2=$_FILES["file"]["name"];
  $wjqm= move_uploaded_file($file["tmp_name"],iconv("UTF-8","gb2312","/admin/load/upload/".$wjqm2));//这句完全没用
  $dx=round($_FILES["file"]["size"] / 1024,2);
  $dz="/admin/load/upload/" . $_FILES["file"]["name"];$sql = "INSERT INTO ziliao (title,sj,dx,dz,wjqm)
 values 
 ('".$title."','".$sj."','".$dx."','".$dz."','".$wjqm."')";
$result = mysql_query($sql)or die ($sql."无法插入数据!! ");alertgo('资料上传成功',"loadadd.php");
}
?>
首先我的所有编码没问题,检查过了什么数据库,页面,等。
网上的这个方面 试了N次 都不行!php utf-8编码: move_uploaded_file( $file["tmp_name"], iconv("UTF-8","gb2312",   $path)); //你的系统默认GBK编码!
php GB2312编码:move_uploaded_file( $file["tmp_name"], iconv("gb2312"," UTF-8",$path)); //你的系统默认UTF8跪求大爷指点 供上100分phpfile中文乱码

解决方案 »

  1.   

    print_r($_FILES["file"]); //看看
      

  2.   

    回复楼上的 jordan102 print_r($_FILES["file"]); 后是以下这段话Array ( [name] => 文档1.docx [type] => application/vnd.openxmlformats-officedocument.wordprocessingml.document [tmp_name] => C:\Windows\Temp\phpD154.tmp [error] => 0 [size] => 39441 )
      

  3.   

    本帖最后由 xuzuning 于 2013-02-07 14:26:47 编辑
      

  4.   

    版主果然牛X。。貌似这LZ思维上出现错误了后面为啥还故意移动一次
      

  5.   

    我自己找到原因了,搞了我 6个多小时,凌晨4点都,外加一个中午放出我的逻辑思维,希望给大家参考,办法虽然笨拙,但起码实现了。核心是
    iconv("原有编码","要转的编码",变量);一。数据库编码最好是UTF-8二。上传文件表单页面用GB2312编码,注意一点表单用密文发送;三。上传系统文件用GB2312编码,然后讲所需要插入数据库的变量全部转码,从GB2312转到UTF-8
    例如:
     $wjqm=$_FILES["file"]["name"];
      $wjqm=iconv("GB2312","UTF-8",$wjqm); 
    四。数据查看页面(其实就是从数据库读取出刚添加了的数据的页面),页面编码方式是GB2312,要把读取出来的数据
    从UTF-8转到 GB2312
    例如:
    <?php echo iconv("UTF-8","GB2312",$cs["wjqm"]); ?>五。删除页面,用GB2312编码。
    接收到的删除地址,讲UTF-8转为GB2312
    例如:
    $dz=@$_REQUEST["dz"];
    $dz=iconv("UTF-8","GB2312",$dz);