About字符编码
打开"记事本"程序Notepad.exe,新建一个文本文件,内容就是一个"严"字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。 然后,用文本编辑软件UltraEdit中的"十六进制功能",观察该文件的内部编码方式。 1)ANSI:文件的编码就是两个字节
打开"记事本"程序Notepad.exe,新建一个文本文件,内容就是一个"严"字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。
然后,用文本编辑软件UltraEdit中的"十六进制功能",观察该文件的内部编码方式。
1)ANSI:文件的编码就是两个字节"D1 CF",这正是"严"的GB2312编码,这也暗示GB2312是采用大头方式存储的。
2)Unicode:编码是四个字节"FF FE 25 4E",其中"FF FE"表明是小头方式存储,真正的编码是4E25。
3)Unicode big endian:编码是四个字节"FE FF 4E 25",其中"FE FF"表明是大头方式存储。
4)UTF-8:编码是六个字节"EF BB BF E4 B8 A5",前三个字节"EF BB BF"表示这是UTF-8编码,后三个"E4B8A5"就是"严"的具体编码,它的存储顺序与编码顺序是一致的。
UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。
PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。
由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。
解决的办法嘛,如果只包含英文字符(或者说ASCII编码内的字符),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。
当然在Python程序中处理的时候遇到这种情况改怎么处理呢?
方法一:直接将源文件的格式修改一下,将其保存为UTF-8即可,但是很多时候传过来的源文件是没法修改的,这样就行不通了。
方法二:替换,就是将其中的\xef\xbb\xbf替换为空就可以了。
VIM 十六进制和文本模式切换
使用vim打开文件后,使用命令
:%!xxd 使用十六进制显示; :%!xxd -r 返回文本显示。
只有十六进制部分的修改才会被采用。右边可打印文本部分的修改忽略不计。
vim以二进制打开文件
vim -b binfile
在 Vim 中将文件保为无 BOM 的 UTF-8 格式
查看文件格式
通常我们需要先查看文件格式是否与预期的一样,再根据结果决定是否需要修改(当然你也可以在不知道原格式的情况下直接修改),下面分别给出了查看文件编码和是否带有 BOM 的命令。
# 查看文件编码。 set fenc? # 查看是否带 BOM。 set bomb?
修改文件格式
# 设置为 UTF-8 编码。 set fenc=utf-8 # 设置为无 BOM,如需设置为带 BOM 则使用 "set bomb"。 set nobomb # 加上BOM标记 set bomb
使用linux命令删除UTF-8编码中的BOM
shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q' or shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//g' or shell> tail -c +4 old_file > new_file
如果使用SVN提交代码的话,可以在pre-commit钩子里加上相关代码用以杜绝BOM。
#!/bin/bash REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook for FILE in $($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}'); do if $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | grep -q $'^\xEF\xBB\xBF'; then echo "Byte Order Mark be found in $FILE" 1>&2 exit 1 fi done
不含 BOM 的 UTF-8 才是标准形式!
带 BOM 的 UTF-8 就是赤裸裸的流氓!!!
不同编码的BOM表示
编码 | 十六进制表示 |
UTF-8 | EF BB BF |
UTF-16-BE | FE FF |
UTF-16-LE | FF FE |
UTF-32-BE | 00 00 FE FF |
UTF-32-LE | FF FE 00 00 |
UTF-7 | 2B 2F 76和以下的一个字节:[ 38 39 2B 2F ] |
en:UTF-1 | F7 64 4C |
en:UTF-EBCIC | DD 73 66 73 |
en:Standard Compression Scheme for Unicode | 0E FE FF |
en:BOCU-1 | FB EE 28及可能跟随着FF |
GB-18030 | 84 31 95 33 |
vim 将文件从dos格式转换到unix格式
:set fileformat=unix :w
VIM 状态栏显示 文件格式带bom
Show fileencoding and bomb in the status line
http://vim.wikia.com/wiki/Show_fileencoding_and_bomb_in_the_status_line
比如 [latin1], [iso-8859-15], [utf-8,B], etc.
if has("statusline") set statusline=% <p>其实有用的就是这段:</p> <pre class="brush:php;toolbar:false"> %{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"}
原文地址:About字符编码, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

iPhone上的預設地圖是Apple專有的地理位置供應商「地圖」。儘管地圖越來越好,但它在美國以外的地區運作不佳。與谷歌地圖相比,它沒有什麼可提供的。在本文中,我們討論了使用Google地圖成為iPhone上的預設地圖的可行性步驟。如何在iPhone中使Google地圖成為預設地圖將Google地圖設定為手機上的預設地圖應用程式比您想像的要容易。請依照以下步驟操作–先決條件步驟–您必須在手機上安裝Gmail。步驟1–開啟AppStore。步驟2–搜尋“Gmail”。步驟3–點選Gmail應用程式旁

隨著技術的發展,現在越來越多的人開始使用ISO文件。 ISO檔案是光碟檔案的一種格式,通常包含光碟的所有內容,包括作業系統、軟體、遊戲等。在電腦上開啟ISO檔案相對簡單,只需使用虛擬光碟機軟體即可。但是,當我們想要在手機上開啟ISO檔案時,可能就會比較困擾了。那麼,本文將介紹一些方法,讓您輕鬆在手機上開啟ISO檔案。一、使用虛擬光碟機應用程式首先,我們可以透過安裝

XML檔可以用PPT開啟嗎? XML,即可擴展標記語言(ExtensibleMarkupLanguage),是一種廣泛應用於資料交換和資料儲存的通用標記語言。與HTML相比,XML更加靈活,能夠定義自己的標籤和資料結構,使得資料的儲存和交換更加方便和統一。而PPT,即PowerPoint,是微軟公司開發的一種用於創建簡報的軟體。它提供了圖文並茂的方

標題:如何解決PyCharm無法開啟的問題PyCharm是一款功能強大的Python整合開發環境,但有時候我們可能會遇到無法開啟PyCharm的問題。在本文中,我們將分享一些常見的解決方法,並提供具體的程式碼範例。希望能幫助遇到這個問題的朋友們。方法一:清除快取有時候PyCharm的快取檔案可能會導致程式無法正常打開,我們可以嘗試清除快取來解決這個問題。具

torrent種子檔案是能夠用軟體將他開啟的,那麼用什麼軟體才能夠開啟呢?使用者需要用迅雷、比特彗星、qBittorrent等下載工具打開,然後就能下載了。這篇種子檔案打開方式介紹就能夠告訴大家具體的內容,以下就是詳細的介紹,趕快看看吧! torrent種子文件用什麼開啟答:用迅雷、比特彗星、qBittorrent等下載工具開啟具體介紹:1、Torrent是BT種子文件,可以用各種下載軟體開啟。 2.這個軟體下載的人越多,就能夠有更快的下載速度。 3.為了確保準確性,軟體每下載一個區塊,就會計算Ha

抖音是一款流行的短視頻社交應用程序,用戶不僅能觀看、分享各種類型的短視頻內容,還提供一系列小遊戲供你玩。那麼抖音小遊戲從哪裡來呢?抖音小遊戲入口在哪?下面就來看看詳細教學。 方法一:小程式開啟 1、點選我選項 進到抖音的主頁之後,點選我選項進入。 2、點選三橫線 進入到我介面之後,點選上面的三橫線按鈕。 3、點選小程式 開啟三橫線選項之後,點選裡面的小程式。 4、點選抖音小遊戲 進入到小程式介面之後,點選抖音小遊戲那個選項即可開啟。 方法二:搜尋開啟 1、點選放大鏡 進

在word轉換器中選擇檔案並點擊開始轉換就可以開啟了。解析1開啟CAJ轉換成Word轉換器,在軟體左側選擇CAJ轉Word。 2然後選擇要轉換的檔案並點擊開啟。 3最後點選開始轉換,就可以在Word中開啟caj檔了。補充:caj是什麼格式1CAJ是電子刊物的一種格式。可以使用CAJ全文瀏覽器來閱讀。支持中國期刊網的CAJ、NH、KDH和PDF格式文件。可以線上閱讀中國期刊網的原文,也可以閱讀下載到本地硬碟的中國期刊網全文。它的列印效果可以達到與原始顯示一致的程度。總結/注意事項CAJ是中國學術期刊

您的手機中缺少時鐘應用程式嗎?日期和時間仍將顯示在iPhone的狀態列上。但是,如果沒有時鐘應用程序,您將無法使用世界時鐘、碼錶、鬧鐘等多項功能。因此,修復時鐘應用程式的缺失應該是您的待辦事項清單的首位。這些解決方案可以幫助您解決此問題。修復1–放置時鐘應用程式如果您錯誤地從主畫面中刪除了時鐘應用程序,您可以將時鐘應用程式放回原位。步驟1–解鎖iPhone並開始向左側滑動,直到到達「應用程式庫」頁面。步驟2–接下來,在搜尋框中搜尋「時鐘」。步驟3–當您在搜尋結果中看到下方的「時鐘」時,請按住它並
