PHP が Excel ファイルを読み取ると、出力値が文字化けします
$handle = fopen("./home.csv","r");
while($items = fgetcsv( $handle ,1000)){
foreach($items as $k=>$v){
$v = iconv('gb2312','utf-8',$v); ($ v);
}
}
-----解決策---------わかりました、この問題について話しているのです
これは php5.3 のバグです、php5.2 は正常です
それを解決するには別の方法を見つける必要があります
------解決策---------
PHP コード
$fname = $_FILES['MyFile']['tmp_name'];//アップロードされた CSV ファイルを取得します
$handle=fopen("$fname","r");//ファイルを開きます
//インポートされたファイルの種類が csv かどうかを判断します
//csvの場合は実行を継続
if($_FILES['MyFile']['type'] !='application/vnd.ms-excel')
{
if($_FILES['MyFile']['type'] != 'テキスト/カンマ区切り値')
{
echo "<script>alert('アップロードしたファイルの種類が一致しません。再度アップロードしてください');window.location='subHotel_import.php';</script>";exit();
}
}
$num = 1;
$total_num = 100;//毎回追加するデータ項目の数を設定します
//テーブル内の元のデータを削除
$db->query("ホテル_アクティビティ_2 から削除");
//インポートしたCSVを開く
//ループしてテーブルに追加
while(!feof($handle))
{
$content = fgets($handle);
$data = preg_split("/,/",$content);
if($data[0] =='')
{
続く;
}
$subHotel_id = preg_replace('/[^0-9]/','',$data[0]);
$subHotel_type= (int)preg_replace('/[^0-9]/','',$data[4]);
if($num == $total_num )
{
$num=1;
$values .= " ($subHotel_id,'".$data[1]."','".$data[2]."','".$data[3]."',$subHotel_type) 、" ;
$values = rtrim($values,',');
$sql ="hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) 値に挿入します。" .$values;
$aaa = $db->クエリ($sql);
$values = '';
}
それ以外
{
$values .= " ($subHotel_id,'".$data[1]."','".$data[2]."','".$data[3]."',$subHotel_type) 、" ;
$num++;
}
}
if(mysql_error!==1){
$values = rtrim($values,',');
$sql ="hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) 値に挿入します。" .$values;
$db->クエリ($sql);
echo "<script>alert('インポート成功!!!');window.location='subHotel_query_file.php';</script>";
}それ以外
{
echo "<script>alert('インポートに失敗しました!!!');window.location='subHotel_import.php';</script>";
}
fclose($handle);
<br>------解決策---------<font color="#e78608"></font>csv形式標準:文字列が必須です 囲まれています二重引用符で囲まれていますが、Microsoft のツール ソフトウェアにはこれらの二重引用符は含まれていません<br>php5.3 より前のバージョンでは、php もこのアプローチに同意していました<br>しかし、php5.3 以降、Microsoft は非協力的な態度を採用したため、fgetcsv は無効。
<br><br>------解決策---------<font color="#e78608"></font>Excel データの読み込みにはプラグインが必要です。このように直接行うことは絶対に不可能です。 <br>以下は、ecxcel データをデータベースに読み取るメソッドです: <br>7.$handle = fopen ("test.csv","r"); <br>8.$sql="insert into sinners( idcard,names ,num,sex,nation,score) value('"; <br>9.while ($data = fgetcsv ($handle, 1000, ",")) { <br>10.$num = count ( $data); <br>11.for ($c=0; $c 12.if($c==$num-1){$sql=$sql. $data[$c]."')";break;} <br>13.$sql=$sql.$data[$c]."','"; <br>14.} <br>15. print "<br>16.echo $sql."<br>17.$db->18.echo "SQL ステートメントの実行成功しました! < br>"; <br>19.$sql="scores(idcard,names,num,sex,nation,score) に挿入します。<br>20.} <br>21.fclose ($handle); <br>22.$time_end = getmicrotime();
ログイン後にコピー