UTF-8與UTF-8 without BOM - 程式人生

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

在位元組流之前有BOM表示採用低位元組序列(低位元組在前面),而UTF-8不用考慮位元組序列,所以其實有無BOM都可以。

UTF-8以位元組為編碼單元,沒有位元組序的問題。

UTF-16 ... 程式人生>>UTF-8與UTF-8withoutBOM UTF-8與UTF-8withoutBOM 阿新••發佈:2018-12-10 UTF-8編碼的檔案可以分為withoutBOM和BOM兩種格式。

何謂BOM?“EFBBBF”這三個位元組就叫BOM,BOM的全稱叫做"ByteOrderMark".在UTF-8檔案中常用BOM來表明這個檔案是UTF-8檔案,而BOM的本意是在UTF-16中用來表示高低位元組序列的。

在位元組流之前有BOM表示採用低位元組序列(低位元組在前面),而UTF-8不用考慮位元組序列,所以其實有無BOM都可以。

UTF-8以位元組為編碼單元,沒有位元組序的問題。

UTF-16以兩個位元組為編碼單元,在解釋一個UTF-16文字前,首先要弄清楚每個編碼單元的位元組序。

例如收到一個“奎”的Unicode編碼是594E,“乙”的Unicode編碼是4E59。

如果我們收到UTF-16位元組流“594E”,那麼這是“奎”還是“乙”? 如果檔案儲存時,選擇了使用BOM,那麼就可能會出現headersalreadysent的問題。

因為Web伺服器軟體可能不認識BOM,所以就把BOM的兩個特殊位元組當做字元傳送給瀏覽器了。

這時再呼叫session_start()等函式,就會出現headersalreadysent的問題。

所以解決此問題最根本的方法就是在儲存UTF-8編碼的檔案時,不要使用BOM。

微軟的記事本Word等只能正確開啟含BOM的UTF8檔案,然而UltraEdit卻恰恰相反,會把BOMUTF-8檔案誤認為ascii編碼。

UTF-8的BOM是EFBBBF,因為UE載入UTF-8檔案會轉成Utf16,上述的EFBBBF在Utf16中是FFFE(Unicode-LE的BOM),UltraEdit不認識BOM又加多一個BOM,所以有2個FFFE。

檔案就被它破壞了。

當應用程式的檔案使用UTF8編碼時,在儲存檔案時,一定要注意BOM的問題。

那麼如何將UTF8withoutBOM轉換成UTF8呢? using(TextReaderinput=newStreamReader(newFileStream(@"C:\Test.properties",FileMode.Open),Encoding.UTF8)) { using(TextWriteroutput=newStreamWriter(newFileStream(@"C:\Test2.lmx",FileMode.Create),Encoding.UTF8)) { intBufferSize=8096; char[]buffer=newchar[i]; intlen; while((len=input.Read(buffer,0,i))>0) { output.Write(buffer,0,len); } input.Close(); } } 過濾器和監聽器原理----小鄧解析 «上一篇 探索Greenplum的實踐,瞭解新一代大資料處理利器下一篇» 相關推薦 UTF-8與UTF-8withoutBOM UTF-8編碼的檔案可以分為withoutBOM和BOM兩種格式。

何謂BOM?“EFBBBF”這三個... 關於EncodeinUTF-8withoutBOM 什麽nic代碼網頁代碼使用python文件頭部環境解釋定義BOM(ByteOrderMark),字節順... UTF-8withoutBOM UTF-8編碼的檔案可以分為withoutBOM和BOM兩種格式。

何謂BOM?"EFBBBF"這三個位元組就叫BOM,BOM的全稱叫做"B... vs2015:/utf-8選項解決UTF-8withoutBOM原始碼中文輸出亂碼問題 本來我已經參考網上關於C++中文輸出亂碼的文章解決了,如下面的程式碼輸出前呼叫wcout.imbue設定loca... Python學習筆記:ConvertUTF-8withBOMtoUTF-8withoutBOMinPython 前言 windows對於utf-8編碼的檔案自帶BOM,但是其他系統utf-8編碼預設不帶BOM。

... VS修改預設編碼格式為utf-8無BOM與utf-8帶BOM VS在使用的時候預設的編碼格式為GB2312如何修改預設的編碼格式呢? 網上都說修改VS建立檔案時的模板如C++... ASCII、Unicode、UTF-8、UTF-8(withoutBOM)、UTF-16、UTF-32傻傻分不清 文件修改編碼常用文件的answith使用常見中文 目錄 ... UTF-8和UTF-8無BOM,一個會導致文件中中文變量無法匹配的bug 阿裏旺旺bspbomlogs文件匹配文件的程序資料 昨晚用dom4j中的selectSingleNode... unicode與utf-8 第一個另存為2個平臺pre--開始方式數字1.ASCII碼我們知道,在計算機內部,所有的信息最終都表示... 字符編碼,ASCII、Unicode與UTF-8的理解 F5標準化一般來說簡書打開文件說了tpscan常用首先我們先要明白的兩點是:1、計算機中的信息都是由二進制... 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 最近訪問 UTF-8與UTF-8+without+BOM 詳解C語言中的stdin,stdout,stderr 遇到問題–python–pytest引用模組錯誤 09年筆記本配置綜合介紹 C#獲取當前時間 [Hb-XI]+標誌暫存器+cmp+jb+ja指令程式設計 Android-完美解決在Activity中觸控返回鍵onBackPressed不能觸發問題 python+2018.7.24++++類空間,對象空間,查詢順序+,組合 [Ubuntu]+fg、bg讓你的程序在前後臺之間切換 Oracle+兩個日期之間的時間間隔



請為這篇文章評分?