何謂UTF-8、UTF-16及UTF-32

繼上一篇文章「Big5碼與Unicode碼之差異性」之後,在留言的部份子靖尋問到,何謂「UTF-8」,所以在本篇中,也將以淺顯易懂的方式來向各位說明。

「何謂UTF-8、UTF-16及UTF-32」

什麼是UTF-8?其實在Wiki中有寫到,UTF是Unicode Transformation Format的縮寫,如就字面上翻譯的話是「Unicode轉換格式」。而數字8則表示是用八個位元所組成的編碼,16就表示用十六個位元組成。如用簡單點的方式來說明這幾種格式的話,UTF-8、UTF-16及UTF-32都是用來表示Unicode的一種儲存格式

「儲存格式」

在上述Wiki的文章內有提到,UTF-8是一種可變長度的編碼,為什麼說是可變長度,下列我將用一張表格來進行介紹UTF格式在不同編碼規則中所需的儲存大小。因Unicode所包含的範圍實在太廣,所以還是以中文的範圍進行說明。

UTF表格

基本上UTF-8不管在哪一個範圍,都會有長度上的變動,或許有人會問到,那儲存成UTF-8或UTF-16有什麼差別呢?下面將做一個簡單的示範來說明差異性,在純文字檔案格式內,儲存一百個相同字型並屬於Unicode Extension A的範圍,儲存成UTF-8及16格式,如下圖所示,UTF-8及16的header分別為3 byte及2 byte,所以兩者果然差了100 byte。

比較

「BE、LE、BOM?!」

本以為沒人會看,所以想偷懶一下,既然有人問到了,就順便把它加進文章來,BE是Big-Endian的縮寫,而LE是Little-Endian的縮寫,這兩個縮寫代表什麼意思呢?以下我們將以「堃」為例,堃的unicode碼為5803,如將文件儲存成LE格式的話則會顯示「03 58」,也就是預設Windows的儲存格式,如存成BE則為「58 03」,像IBM、HP大型主機的格式。

BOM是byte-order mark的縮寫,中文叫「位元組順序記號」,想知道詳細的部份,可以參考Wiki,簡單說的話呢,BOM就是用來表示文件是儲存成何種Unicode格式的,因為UTF-8沒有順序的問題,所以我將就UTF-16做說明,如將文件儲存成UTF-16 (LE有BOM)時,並用二進位編輯器開啟時,會看到前會帶了「FE FF」的記號,而無BOM格式,就是將前端的記號拿掉,而這功能主要是用在傳輸時判斷來源檔案格式用的。

「效能」

可能有人會想做這種測試有什麼意義呢?如果我們把數千億筆的資料放到database裡可就有很大的差別了,同時也出現另一個問題,由於UTF-8是可變長度,所以「有可能」會使用較少的儲存空間,但也是因為為可變長度,所以資料庫的效能也較UTF-16及UTF-32來的差。

「murmur」

在寫完這篇文章後的不久,hugo也要離開目前所就職的公司,一切相關的知識都是從這裡開始,也從來沒想過有天會打滾在各種語系編碼當中,最後我還是要感謝一下教授我各種唬爛專業知識的ya老闆。最後如果您對於此文章有任何的問題及指教,都歡迎留言給我。

Related Posts
Big5碼與Unicode碼之差異性
由於hugo每天都要在字碼中打滾,自然而然的對各種編碼有較基本的認知,也發現到一般的使用者,或是資訊相關人員其實對字碼的部份也不甚了解,所以在這前提之下讓hugo想把兩者的差異性寫成較簡單的文章,供大家參考。在此文章內將先不論兩者編碼之規範,單純以收錄字數做單一比較。
READ MORE
[筆記] iPAD 漫畫閱讀軟體
使用iPAD也蠻久的一段時間了,用大部分都是使用在閱讀電子書跟線上漫畫的部份,說實在蠻少拿來上網或者是玩遊戲的,在網路上搜尋一些文章後,發現大家使用的漫畫閱讀工具都不太一樣,在這邊列出我個人比較後留下來的一些軟體。
READ MORE
[筆記] TP-Link TL-WR941ND & 841ND刷Gargoyle韌體
在網路上找了一些文章,雖然可以將941ND與841ND刷成DD-WRT的韌體,但是所找到的文章都說無線及QoS的部份設定上好像會有問題所以不在考慮當中,剩下可以使用的第三方韌體就只有OpenWrt及Gargoyle了...
READ MORE
[筆記] Google Calendar Sync 選取設定檔問題
因工作的需要都會將outlook的行事曆同步到google calendar上,所以自然會安裝google所提供的Google Calendar Sync這工具,當設定完成要同步行事曆時,這小工具都會跳出要選取設定檔的對話框...
READ MORE
[筆記] 如何讓ASUS N-12無線速度符合ADSL 50M
在網路上找到的文章都說N-12在無線部份只能跑到20-30M左右,實在越想越奇怪,明明就是802.11n支援到300M,怎麼可能連一半都跑不到,過了兩個星期的google之後,今天終於找到了解答。
READ MORE
在這勝利的半年,除了各家的高手發表的Homebrew外,我個人比較有興趣的是Showtime這款軟體,這是一款支援各系統的撥放器,據我個人初淺的了解應該是第一個可以在ps3上外掛字幕的撥放器,使用上也不需要像PS3 Media Server一樣,還需透過PC來進行轉檔,而是直接把檔案放在PS3的目錄底下即可。
READ MORE
三款免費PDF轉檔軟體評比
因為最近在工作上遇到了一個小問題,主要就是先前所使用的pdf軟體,如果檔名是中文的話,則轉換後檔名僅會顯示ANSI的字元,每次轉完都需要自己在改一次檔名,所以測試了目前幾款免費的PDF轉換軟體,供各位參考。
READ MORE
解決Windows 7播放DVD無字幕問題
今天跟女王一起看DVD-Image時,發現字幕都出不來,明明有設定但是就是沒有字幕,而且妙的是用Windows 7內建的Media Player Center撥放就有字幕,但用MPC就是沒有,不死心的我找了老半天才找到解答
READ MORE
利用SSH Tunnel逃離MIS掌控魔爪
現在有蠻多公司內部都會採用些gateway端的產品來阻擋使用者瀏覽網頁,或上上MSN,美其名當然是可以減少中毒的機會,但實則為希望員工可以乖乖專心上班增加效率,不過休息是為了走更長遠的路,短暫的摸魚也是工作項目之一呀!。所以這篇文章的目的主要是提供個小技巧,讓上班的時間更充滿愉快。
READ MORE
Big5碼與Unicode碼之差異性
[筆記] iPAD 漫畫閱讀軟體
[筆記] TP-Link TL-WR941ND & 841ND刷Gargoyle韌體
[筆記] Google Calendar Sync 選取設定檔問題
[筆記] 如何讓ASUS N-12無線速度符合ADSL 50M
[PS3] Showtime 播放繁體字幕
三款免費PDF轉檔軟體評比
解決Windows 7播放DVD無字幕問題
利用SSH Tunnel逃離MIS掌控魔爪
把Google App Engine當Proxy使用

本著作係採用創用 CC 姓名標示-非商業性-禁止改作 3.0 台灣 授權條款授權。