如何從檔案的內容判斷一個檔案是不是.csv檔案
來源:互聯網
上載者:User
怎麼從檔案的內容判斷一個檔案是不是.csv檔案
這裡面不允許通過擴張名。怕別人改擴張名
還有我安裝裡面是否包含逗號不行,因為有的檔案是讀出的內容也是亂碼?結果它就會把亂碼讀成逗號?
而且我需要判斷.csv檔案的嚴謹方法和理論,不能想當然的。其實僅按逗號肯定是不嚴謹的啊,其實是亂碼可能變成逗號,其二一個檔案裡面有一個逗號算是合格的csv檔案了
謝謝,求高手
------解決方案--------------------
沒辦法
------解決方案--------------------
試試str_getcsv解析
http://php.net/manual/en/function.str-getcsv.php
用是否error來判斷
------解決方案--------------------
任何情況下都不會因讀取逗號而導致亂碼
csv檔案是文字檔,唯一可識別的地方就是每行都有相等數量的資料行分隔符號(預設是逗號)
考慮到內容中可能存在逗號(此時內容需要用引號括起),當檢測到80%以上行的資料行分隔符號數量相等時,就可認為是合格的csv檔案
另外非標準的csv,即字元類型的內容未用雙引號括起的csv。至少在 php5.3 for win 是無法用
fgetcsv 或 str_getcsv 函數正確讀取的
------解決方案--------------------
csv 檔案表達的是一個陣列
如果每行的列數不等,就不是csv
------解決方案--------------------
全稱
Comma Separated Values
編輯本段
規則
1 開頭是不留空,以行為單位。
2 可含或不含列名,含列名則居檔案第一行。
3 一行資料不垮行,無空行。
4 以半形逗號(即,)作分隔字元,列為空白也要表達其存在。
5 列內容如存在半形逗號(即,)則用半形引號(即"")將該欄位值包含起來。
6 列內容如存在半形引號(即")則應替換成半形雙引號("")轉義,並用半形引號(即"")將該欄位值包含起來。
7 檔案讀寫時引號,逗號操作規則互逆。
8 內碼格式不限,可為 ASCII、Unicode 或者其他。
9 不支援特殊字元
------解決方案--------------------
按規則要求來查
------解決方案--------------------
你希望使用者的csv是什麼格式?另外對於檔案來說,沒有亂碼的概念,只有位元組的概念,
亂碼只是若干位元組不能在指定的字元集(比如GB2312)裡顯示而已。
------解決方案--------------------
以半形逗號(即,)作分隔字元,列為空白也要表達其存在
這點很重要
------解決方案--------------------
找一個csv導成其他格式的類 能導成功的就是 不能的就不是,這曲線救國了吧
------解決方案--------------------
探討
引用:
以半形逗號(即,)作分隔字元,列為空白也要表達其存在
這點很重要
都跟你說了,這個等於沒說?
要是你的一個word裡面也有逗號,你讀出內容,請問你知道這個逗號是分割符還是有效字元嗎?
你可以按照逗號來讀取一個.csv檔案
但是你僅用有沒有逗號來區別是不是。csv檔案 這個太牽強。理由太不充分
這個逗號不是充要條件