2013年12月5日 星期四

字元、字集、字符、字串、字節、長度


字元與字符
目前在維基百科,字元跟字符是同一筆資料,以字元為條目名稱。「簡單來講就是一個漢字、日文字、韓文字...,或是一個英文。」

字集、字符集、字元編碼、字符編碼是同一筆資料。這個比較有趣一點,條目名稱是字元編碼,但是網址上寫字符編碼。即使網址打字元編碼,但仍會轉址到字符編碼。但是如果網址打字集,它不會變,不過內容的條目名稱仍然是字元編碼。

總之,字元==字符。目前以"字元"這個名稱為主。

字節:這個字台灣這邊好像少用,似乎是中國那邊用的比較多。字節就是位元組(byte)

字串:一串字叫字串,應該不用多講。

字串長度
位元,代表 1 個bit,位元組是 byte。通常講一個字或字串的長度,是指位元組(byte)。例如 A 這個英文字母,長度是 1 個 byte 。但是用在其它語言就不一定了。即使是同一個語言也會因為編碼不同而有不同長度。再加上螢幕上所顯示的長度也會有變化。

使用 big5 編碼的中文字,一個字使用 2 個 byte 來儲存,顯示在螢幕上也佔用是 2 個格子。但是如果使用 utf8 編碼,一個中文字使用 3 個 byte ,而顯示在螢幕上仍然是 2 格。

但是如果在講網頁的版面時,用的是 utf8 編碼,說一個中文字佔 2 個 byte ,這就有疑問了。byte 是磁碟儲存空間,使用 utf8 編碼的中文字,它的大小明明就是 3 個 byte ,應該不能說它佔 2 個 byte 吧。但是要怎麼表達呢?嗯…這就是寫這篇文章的原因,想名正言順一下。不過目前沒想到比較短、可以一統江湖的說法。"顯示長度" 倒是可以用看看。。

所以在網頁或資料庫的文字處理上有時就會遇到一些麻煩的地方。

自己寫的處理字串的函數 :
PHP函數 - 切割 utf8 字串 - 指定每行字數與行數
PHP函數 - 計算顯示長度

其它參考文章
Javascript 中文字串長度計算

沒有留言:

張貼留言