UTF-8與UTF-8 without BOM - 程式人生
文章推薦指數: 80 %
在位元組流之前有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+兩個日期之間的時間間隔
延伸文章資訊
- 1「带BOM 的UTF-8」和「无BOM 的UTF-8」有什么区别?网页 ...
While there is obviously no need for a byte order signature when using UTF-8, there are occasions...
- 2UTF-8 without BOM - Activities - UiPath Community Forum
Dear all, I need to create a file in UTF-8 without BOM format . Do you know if this is possible? ...
- 3What's the difference between UTF-8 and UTF-8 with BOM?
- 4UTF-8 vs UTF-8 with BOM - Super User
The Unicode Standard permits the BOM in UTF-8, but does not require or recommend its use. Byte or...
- 5UTF-8與UTF-8 without BOM - 程式人生
在位元組流之前有BOM表示採用低位元組序列(低位元組在前面),而UTF-8不用考慮位元組序列,所以其實有無BOM都可以。UTF-8以位元組為編碼單元,沒有位元組序的問題。UTF-16 ...