一位客戶向我發送.csv文件,其中換行符由0xD 0xD 0xA
組成。據我所知換行符來自Mac或Unix的0xA
或來自Windows的0xD 0xA
。帶有0D 0D 0A換行符的文本文件
是0xD 0xD 0xA
任何已知的編碼?是否有任何已知的節省序列會破壞文件的行結尾(導致此行爲)(我認爲客戶使用Mac)?
該文件不是以任何編碼標記開始,它直接從文本內容開始。如果用代碼頁1252打開,則文本顯示正確。
一位客戶向我發送.csv文件,其中換行符由0xD 0xD 0xA
組成。據我所知換行符來自Mac或Unix的0xA
或來自Windows的0xD 0xA
。帶有0D 0D 0A換行符的文本文件
是0xD 0xD 0xA
任何已知的編碼?是否有任何已知的節省序列會破壞文件的行結尾(導致此行爲)(我認爲客戶使用Mac)?
該文件不是以任何編碼標記開始,它直接從文本內容開始。如果用代碼頁1252打開,則文本顯示正確。
CRCRLF被稱爲Windows XP notepad word wrap bug的結果。
以供將來參考,這裏是從鏈接的博客相關的摘錄:
當你按在Windows計算機上的回車鍵,兩個字符實際存儲:回車(CR)和換行符(如果)。操作系統總是按照Enter鍵的方式解釋字符序列CR LF:它將移動到下一行。但是,當單獨有額外的CR或LF字符時,這有時會導致問題。
在Windows XP版本的記事本中存在一個缺陷,可能會導致額外的CR字符存儲在顯示窗口中。該錯誤發生在以下情況下:
如果打開了單詞換行選項,並且顯示窗口包含換行的長行,則保存該文件將導致記事本在每個換行點處插入字符CR CR LF顯示窗口,但不在保存的文件中。
如果將CR CR LF字符複製並粘貼到其他程序中,CR CR LF字符可能會造成不必要的麻煩。如果您調整記事本窗口的大小,它們還會阻止記事本正確地重新包裝線條。
您可以通過關閉文字換行功能來刪除CR CR LF字符,然後根據需要將其重新打開。但是,當您這樣做時,光標將重新定位在顯示窗口的開頭。
這通常從在修訂控制系統,或類似的錯誤造成的。這是從CVS一個產品,如果一個文件從Windows簽入到Unix服務器,然後再次被檢出......
換句話說,它只是破...
網景ANSI編碼的文件使用0D 0D 0A作爲換行符。
Apple郵件也被稱爲在文本和csv附件出站時發生編碼錯誤。實質上,它用行中的軟換行替換行終止符,在編碼中看起來像= 0D。如果附件通過電子郵件發送到Outlook,Outlook會看到軟線斷開,刪除=然後附加真正的換行符,即0D0A,因此您在每行末尾得到0D0D0A(cr cr lf)。編碼應該= 0D =如果它是一個mac格式文件(或任何其他unix的味道)或= 0D0A =如果它是一個Windows格式文件。
如果您通過蘋果郵件(至少在特拉華州或優勝美地)發送電子郵件,使附件不是文本或csv文件是可接受的解決方法,例如,壓縮它。
如果您在parallels下運行windows虛擬機,並使用蘋果郵件通過電子郵件發送txt文件,該bug也存在。這是電子郵件編碼。在這裏形成以前的評論,它看起來像netscape有同樣的問題。
只是說,這也是價值(那種...)是從PHP返回時:
<?php var_dump(urlencode(PHP_EOL)); ?>
// Prints: string '%0D%0A' (length=6)-- used in 5.4.24 at least
我發現,當我在Windows系統上的TortoiseCVS退房,默認是使用Windows行結尾。這導致'0D 0A'轉換爲'0D 0D 0A'(爲什麼TCVS在將'0A'擴展爲'0D 0A'?!時不尊重現有的'0D 0A'),並且我在Eclipse中以雙線間距結束我厭倦了清理。通過在退房時選擇「使用UNIX行尾」選項來解決該問題。 – ADTC