mbstring 擴充套件
我們所說的多位元組字元指的是不在傳統的 128 個 ascii 字符集中的字元,比如中文字元。而 php 中處理字串的函式預設假設所有字元都是 8 位字元,占用乙個位元組,如果使用這些 php 原生的字串處理函式處理包含多位元組字元的 unicode 字串,會得到意料之外的錯誤結果。
為了避免處理多位元組字元出錯,可以安裝mbstring
擴充套件。這個擴充套件提供了處理多位元組字串的函式,能替代大多數 php 原生的處理字串的函式,例如,可以使用mb_strlen()
替代原生的strlen()
函式來獲取字串長度。
注:更多多位元組字串處理函式請參考官方文件lar**el 底層的字串處理函式很多也用到
mbstring
提供的函式對字串進行處理。詳見illuminate\support\str
類,這個比較簡單,這裡就不做贅述了。
字元編碼
字元編碼是打包 unicode 資料的方式,以便把資料儲存在記憶體中,或者在伺服器和瀏覽器之間傳輸。utf-8 是多種可用字元編碼中的一種,但是是最流行的一種,所有現代 web 瀏覽器都支援。
處理多位元組字串的時候,記住以下幾個建議:
mbstring 擴充套件不僅能處理 unicode 字串,還能在不同的字元編碼之間轉換多位元組字串。我們可以使用mb_detect_encoding()
方法檢測字元編碼,然後使用mb_convert_encoding()
方法轉換字元編碼。
輸出 utf-8 資料
處理多位元組字串的時候,需要告知 php 使用 utf-8 字元編碼,我們可以在php.ini
中進行全域性設定:
default_charset = "utf-8";
很多 php 函式都會使用這個預設的字元編碼,如htmlentities()、html_entity_decode()
和htmlspecialchars()
,以及mbstring
擴充套件提供的函式。
在瀏覽器輸出時,我們可以通過header()
函式指定輸出資料字元編碼:
<?php
我們還建議在 html 文件的頭部加上這個 meta 標籤:
多位元組字串轉寬位元組字串(windows)
windows函式 multibytetowidechar提供將多位元組字串轉換為寬位元組字串的功能 參考windows核心程式設計2.8 int multibytetowidechar uint ucodepage,dword dwflags,pcstr pmultibytestr,int cbm...
PHP最佳實踐之多位元組字串 字元編碼
多位元組字串 1 php假設字串中的每乙個字元都是八位字元,占用乙個位元組的記憶體。但是,你有可能會遇到多位元組字串。2 這裡所說的多位元組字串是指不在傳統的128個ascii字符集中的字元。如果使用php原生的字串函式處理這些多位元組unicode字串,會得到意外的錯誤。3 安裝mbstring擴...
多位元組字串與寬字串的轉換
多位元組字串與寬字串的轉換可使用c api者win32 api.c api mbstowcs,wcstombs win32 api multibytetowidechar,widechartomultibyte 下面著重介紹win32 api的用法,c api的用法較為簡單可參照win32 api。...