<?php
if(!isset($_FILES['cfile']))
{
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="css/style.css" type="text/css">
<table class='users'>
<tr><td>导入格式示例</td><td>18600000000,张三<br />18600000001,李四<br />18600000002,王五<br />(逗号为半角逗号)</td></tr>
<form action='imp.php' method='post' enctype="multipart/form-data">
<tr><td colspan=2>请选择文件:<input type='file' name='cfile' id='cfile'></td></tr>
<input type='hidden' name='gid' value='<?php echo $_GET['id'];?>'>
<tr><td colspan=2><input type='submit' value='提交'></td></tr>
</form>
</table>
<?php
}
else
{
require_once("./include/func.php");
?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
init_db();
checklogin();
$gid=sql_quote($_POST['gid']);
if(($_FILES['cfile']['type']!='text/plain')&&($_FILES['cfile']['type']!='application/vnd.ms-excel'))
        {
                alert('请勿提交非txt或csv文件');
        }
        switch($_FILES['cfile']['error'])
        {
                case 0:
                        break;
                case 1:
                        alert('文件过大,上传失败');
                        break;
                case 2:
                        alert('文件过大,上传失败');
                        break;
                default:
                        alert('上传失败');
                        break;
        }
        $fp=fopen($_FILES['cfile']['tmp_name'],'r');
echo fp;
        while(!feof($fp))
        {
            $data=fgets($fp);
$sql="";
$data = str_replace("\r","",$data);
$data = str_replace("\n","",$data);
$pr=preg_split("/,/",$data);
$phone=$pr[0];
$name=$pr[1];
            if(preg_match('/\d/',$phone))
            {
echo $name;
                $sql="INSERT INTO `contact` (`gid`,`phone`,`name`)VALUES";
                $sql.="('".$gid."','".sql_quote($phone)."','".sql_quote($name)."');";
mysql_query($sql);
            }        }
alert("导入完毕");
}
?>此代码读出必须读UTF-8不加BOM的才不是乱码,而WINDOW XP 下文本文档的UTF-8是带BOM格式,如何让此代码可以读ANSI的然后插入到数据库内的还不是乱码呢?  或者读出ANSI的不是乱码就行 ,往数据库里插入的时候我再转。为什么读取时候没有限定编码格式而必须要读那种奇怪的编码呢?