PHP編碼轉換

2021-08-30 22:56:20 字數 2802 閱讀 1802

php編碼轉換函式mb_convert_encoding與iconv的使用說明

文章分類:php程式設計

mb_convert_encodeing gbk to utf-8 例

php** 

< ?php   

header("content-type: text/html; charset=utf-8");

echo mb_convert_encoding("你係我的友仔", "utf-8", "gbk");

?>

mb_convert_encodeing gb2312 to big5  例

php**

< ?php   

header("content-type: text/html; charset=big5");

echo mb_convert_encoding("你是我的朋友", "big5", "gb2312");

?>

要使用上面的函式需要安裝但是需要先enable mbstring 擴充套件庫。

mb_convert_encoding用法:

string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )

需要先enable mbstring 擴充套件庫,在php.ini裡將; extension=php_mbstring.dll 前面的 ; 去掉

mb_convert_encoding 可以指定多種輸入編碼,它會根據內容自動識別,但是執行效率比iconv差太多;

php中的另外乙個函式iconv也是用來轉換字串編碼的,與上函式功能相似。

下面還有一些詳細的例子:

iconv — convert string to requested character encoding

(php4 >= 4.0.5,php5)

mb_convert_encoding — convert character encoding

(php4 >= 4.0.6,php5)

iconv用法: 

string iconv ( string in_charset, string out_charset, string str )

注意:第二個引數,除了可以指定要轉化到的編碼以外,還可以增加兩個字尾://translit 和 //ignore,其中 //translit 會自動將不能直接轉化的字元變成乙個或多個近似的字元,//ignore 會忽略掉不能轉化的字元,而預設效果是從第乙個非法字元截斷。

returns the converted string or false on failure.

iconv使用:

發現iconv在轉換字元」—」(ascii碼150之後的字元)到gb2312時會出錯,如果沒有ignore引數,

所有該字元後面的字串都無法被儲存。不管怎麼樣,這個」—」都無法轉換成功,無法輸出。 另外mb_convert_encoding沒有這個bug.

一般情況下用 iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉化後無法正常顯示時才用mb_convert_encoding 函式.

from_encoding is specified by character code name before conversion.

it can be array or string - comma separated enumerated list. if it is not specified, the internal encoding will be used.

/* auto detect encoding from jis, eucjp-win, sjis-win, then convert str to ucs-2le */

$str = mb_convert_encoding($str, 「ucs-2le」, 「jis, eucjp-win, sjis-win」);

/* 「auto」 is expanded to 「ascii,jis,utf-8,euc-jp,sjis」 */

$str = mb_convert_encoding($str, 「euc-jp」, 「auto」);

iconv例子:

以下為引用的內容: 

$content = iconv(」gbk」, 「utf-8″, $content); 

$content = mb_convert_encoding($content, 「utf-8″, 「gbk」);

php中使用mb_convert_encoding轉碼的小陷阱

php程式中使用mb_convert_encoding()方法進行字元編碼轉換大家都很熟悉了,平時也在大量的使用。

而且在一般情況下該方法也表現的足夠好,值得表揚。但在乙個專案中我們需要使用它進行utf8到gbk的轉換,

在轉換一些特殊字元時發現了乙個不大不小的問題。

具體表現為mb把在utf8可編碼的字元而在gbk中不可編碼的字元都轉成了

PHP編碼轉換

select collationproperty chinese prc stroke ci ai ks ws codepjmjwdrage 返回為936,即gbk編碼。936 簡體中文gbk 950 正體中文big5 437 美國 加拿大英語 932 日文 949 韓文 866 俄文 65001 ...

PHP編碼轉換函式

gb2312轉換成utf 8 utf iconv gb2312 utf 8 request keyword 將字串utf 8碼轉換為gb2312碼 str iconv utf 8 gb2312 translit str iconv 函式definition and usage 定義和用法 iconv...

php編碼轉換函式

不過英文一般不會存在編碼問題,只有中文資料才會有這個問題。比如你用zend studio或editplus寫程式時,用的是gbk編碼,如果資料需要入資料庫,而資料庫的編碼為utf8時,這時就要把資料進行編碼轉換,不然進到資料庫就會變成亂碼。mb convert encoding的用法見官方 做乙個g...