簡(jiǎn)介

雖然許多語(yǔ)言每個(gè)必要字符都能一對(duì)一映射到 8 比特(bit)的值,但也有好幾種語(yǔ)言需要非常多的字符來(lái)書(shū)面通訊,以至于它們的編碼范圍不能僅僅包含在一個(gè)字節(jié)里(一個(gè)字節(jié) Byte 由 8 比特 bit 構(gòu)成。每一比特僅能包含兩種不同的值: 1 或 0。所以,一字節(jié)僅能夠表示 256 種不同的值,即 2 的八次方)。 開(kāi)發(fā)多字節(jié)字符編碼方案是為了在基于字節(jié)的常規(guī)編碼系統(tǒng)中表達(dá)超過(guò) 256 個(gè)字符。

在你操作(trim、split、splice 等等)多字節(jié)編碼的字符串的時(shí)候,由于在這種編碼方案下,兩個(gè)或多個(gè)連續(xù)字節(jié)可能只表達(dá)了一個(gè)字符,所以你需要使用專(zhuān)門(mén)的函數(shù)。 否則,當(dāng)你將不能檢測(cè)多字節(jié)字符串的函數(shù)應(yīng)用到這個(gè)字符串的時(shí)候,它可能無(wú)法檢測(cè)多字節(jié)字符的起始位置,并以亂碼字符串結(jié)尾,基本丟失了它原來(lái)的意思。

mbstring 提供了針對(duì)多字節(jié)字符串的函數(shù),能夠幫你處理 PHP 中的多字節(jié)編碼。 除此以外,mbstring 還能在可能的字符編碼之間相互進(jìn)行編碼轉(zhuǎn)換。 為了方便起見(jiàn),mbstring 設(shè)計(jì)成了處理基于 Unicode 的編碼,類(lèi)似 UTF-8、UCS-2 及諸多單字節(jié)的編碼(在以下列出了)。