utf-8編碼寫出csv檔案Excel開啟亂碼問題解決_U繡花同志

文章推薦指數: 80 %
投票人數:10人

其實是UTF-8檔案的Unicode簽名BOM(Byte Order Mark) ... 在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。

MdEditor utf-8編碼寫出csv檔案Excel開啟亂碼問題解決 語言:CN/TW/HK 時間 2021-01-1916:01:54 U繡花同志 主題: mark ultraedit java 原因: 是因為輸出的檔案總沒有BOM BOM是ByteOrderMark(定義位元組順序),因為在網路傳輸中分兩種順序:大頭和小頭 其實是UTF-8檔案的Unicode簽名BOM(ByteOrderMark) 解決方式: //0xEF,0xBB,0xBB寫入BOM byte[]bytes={(byte)0xEF,(byte)0xBB,(byte)0xBB}; 在UCS編碼中有一個叫做"ZEROWIDTHNO-BREAKSPACE"的字元,它的編碼是FEFF。

而FFFE在UCS中是不存在的字元,所以不應該出現在實際傳輸中。

UCS規範建議我們在傳輸位元組流前,先傳輸字元"ZEROWIDTHNO-BREAKSPACE"。

這樣接受者如果收到FEFF,就表明這個位元組流是Big-Endian的; 如果收到FFFE,就表明這個位元組流是Little-Endian的。

因此字元"ZEROWIDTHNO-BREAKSPACE"又被稱作BOM。

UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明編碼方式。

字元"ZEROWIDTHNO-BREAKSPACE"的UTF-8編碼是EFBBBF。

所以如果接收者收到以EFBBBF開頭的位元組流,就知道這是UTF-8編碼了。

Windows就是使用BOM來標記文字檔案的編碼方式的。

在UTF-16裡本來是FFFE,變成UTF-8就成了EFBBBF。

這個標記是可選的,因為UTF8位元組沒有順序,所以它可以被用來檢測一個位元組流是否是UTF-8編碼的。

微軟做這種檢測,但有些軟體不做這種檢測,而把它當作正常字元處理。

微軟在自己的UTF-8格式的文字檔案之前加上了EFBBBF三個位元組,windows上面的notepad等程式就是根據這三個位元組來確定一個文字檔案是ASCII的還是UTF-8的,然而這個只是微軟暗自作的標記,其它平臺上並沒有對UTF-8文字檔案做個這樣的標記。

也就是說一個UTF-8檔案可能有BOM,也可能沒有BOM,那麼怎麼區分呢? 三種方法: 用UltraEdit-32開啟檔案,切換到十六進位制編輯模式,察看檔案頭部是否有EFBBBF。

用Dreamweaver開啟,察看頁面屬性,看“包括Unicode簽名BOM”前面是否有個勾。

用Windows的記事本開啟,選擇“另存為”,看檔案的預設編碼是UTF-8還是ANSI,如果是ANSI則不帶BOM。

另外還有一些編碼的小知識: 所謂的unicode儲存的檔案實際上是utf-16,只不過恰好跟unicode的碼相同而已,但在概念上unicode與utf是兩回事,unicode是記憶體編碼表示方案,而utf是如何儲存和傳輸unicode的方案。

utf-16還分高位在前(LE)和高位在後(BE)兩種。

官方的utf編碼還有utf-32,也分LE和BE。

非unicode官方的utf編碼還有utf-7,主要用於郵件傳輸。

utf-8的單位元組部分是和iso-8859-1相容的,這主要是一些舊的系統和庫函式不能正確處理utf-16而被迫出來的,而且對英語字元來說,也節省儲存的檔案空間(以非英語字元浪費空間為代價)。

在iso-8859-1的時候,utf8和iso-8859-1都是用一個位元組表示的,當表示其它字元的時候,utf-8會使用兩個或三個位元組 轉自:https://www.cnblogs.com/SnowyDong/p/9467632.html 「其他文章」 mybatis傳入的值為0時的判斷 utf-8編碼寫出csv檔案Excel開啟亂碼問題解決 springboot手動開啟事務及提交事務 「mark」 分散式事務解決方案之可靠訊息最終一致性 分散式事務解決方案之TCC js-mark新時代的網頁標記容器 深度學習六十年簡史 FlyFish2.0版本後端原始碼學習筆記 Pytest----如何使用mark 內卷大廠系列《連結串列反轉三連擊》 內卷大廠系列《跳躍遊戲三連擊》 成立不到兩年的LightMark小白光,如何實現對千億鑽石行業的顛覆? 當你瞭解了Apahce的過去,你就瞭解了ApacheWay 「ultraedit」 Xshell6提示“要繼續使用此程式,您必須應用最新的更新或使用新版本” UEStudio最新版v21:改進內部解析引擎 大神論壇逆向脫殼分析基礎學習筆記一進位制篇 Linux下如何不停止服務,清空nohup.out檔案 UltraEdit文字編輯器教程:對動態巨集使用“複製”和“選定”變數 UltraEdit文字編輯器教程:編寫強大的巨集 更快,更智慧的編輯其UltraEditV28釋出! UltraEdit文字編輯器教程:UltraEdit/UEStudio指令碼訪問剪貼簿內容 UltraEdit文字編輯器整合指令碼引擎教程 UltraEdit文字編輯器教程:將Yahoo!,Google,Wikipedia等與UltraEdit整合



請為這篇文章評分?