Re: [請益] strpos會抓錯位置?

看板PHP作者 (累人啊....)時間13年前 (2012/03/02 13:56), 編輯推噓1(1013)
留言14則, 6人參與, 最新討論串2/2 (看更多)
: → tyc5116:反正從csv讀進來的資料,一樣,第一筆結果會是錯的 03/02 00:09 : → tyc5116:如果csv的資料第一行空白,結果都是對的,好奇怪 03/02 00:10 : 推 chrisQQ:第一筆前面可能有BOM,你用 hex editor 打開來看就知道了 03/02 00:32 : → chrisQQ:或是有其他神秘的 header 在那 03/02 00:33 : → tyc5116:看了一下,真的有沒錯,可是我該怎麼避免掉這個情況 03/02 07:55 : → tyc5116:主要是php,mysql,excel間的處理excel的資料要寫入mysql 03/02 07:56 : → tyc5116:先不考慮板上說的phpexcel好了,因為我的表格並不複雜XD 03/02 07:57 : → tyf99:第一行空下來? 03/02 08:07 : → mervynW:trim試試看 03/02 10:18 測了一陣子,發現為什麼會有這樣的問題了,但還沒完美的解決方式 首先,excel內將檔案存成csv檔,這時編碼是ansi,這時用hex editor看是正常的 然後我再用記事本(NotePad)開啟,再另存新檔,這時將其編碼存成UTF-8 (不然網頁打開會是亂碼),再用hex editor開來看 發現第一筆的資料前面多了三個字元,分別是KF BB BF(hex),把它刪掉結果就OK了 但請問我這樣操作的方式是正常的嗎?或是還有其它方式? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.163.108

03/02 13:58, , 1F
BOM? = =
03/02 13:58, 1F

03/02 14:09, , 2F
?
03/02 14:09, 2F

03/02 14:47, , 3F
BOM +1
03/02 14:47, 3F

03/02 15:20, , 4F
BOM ... ...
03/02 15:20, 4F

03/02 16:33, , 5F
如果你的流程不變,那就是每個檔案讀進來先把前3bytes幹掉
03/02 16:33, 5F

03/02 16:33, , 6F
在丟去你的程式,這樣最快最方便 XD 只要加一行。
03/02 16:33, 6F

03/02 16:34, , 7F
或是改用 notepad++ 等等其他能夠存不含BOM utf8 的editor
03/02 16:34, 7F

03/02 22:45, , 8F
爬文後知道了BOM這東西,不過它固定占前三個byte嗎?
03/02 22:45, 8F

03/02 23:22, , 9F
yes
03/02 23:22, 9F

03/03 01:28, , 10F
if(substr($s,0,3)=="\xEF\xBB\xBF") $s=substr($s,3;)
03/03 01:28, 10F

03/03 01:29, , 11F
這樣不管有沒有bom,只要是UTF-8都沒問題
03/03 01:29, 11F

03/03 01:29, , 12F
不過基本上還是確保來源txt沒有bom最完美
03/03 01:29, 12F

03/03 04:59, , 13F
我印象中可以用header去處理掉,可是正解應該還是用編輯器
03/03 04:59, 13F

03/03 05:00, , 14F
存成不含bom的utf8檔,除非你的這支程式要給吃bom的程式讀
03/03 05:00, 14F
文章代碼(AID): #1FK64DEQ (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1FK64DEQ (PHP)