pHp中的另外一個函數(shù)iconv也是用來轉換編碼的

2023-12-06    分類: 網(wǎng)站建設

在pHp代碼轉換中使用mb_convert_encoding和iconv的說明

更新時間:2009年12月16日17:43:25作者:

mb_convert_encoding此函數(shù)用于轉換編碼。我從不了解程序編碼的概念,但現(xiàn)在似乎有所啟發(fā)。

但是,英語通常不會出現(xiàn)編碼問題,只有中文數(shù)據(jù)會出現(xiàn)此問題。例如,當您使用Zend Studio或Editplus編寫程序時,將使用gbk編碼。如果需要將數(shù)據(jù)輸入數(shù)據(jù)庫,并且數(shù)據(jù)庫編碼為utf8,則必須對數(shù)據(jù)進行編碼和轉換,否則在進入數(shù)據(jù)庫時會出現(xiàn)亂碼。

有關mb_convert_encoding的用法,請參見官方文件:

將GbK轉換為UTF-8

復制代碼,代碼如下:

又一個Gb2312到big5

復制代碼,代碼如下:

但是,要使用上述功能,需要安裝它,但需要首先啟用mbstring擴展庫。

pHp中的另一個函數(shù)iconv也用于轉換字符串編碼,類似于上面的函數(shù)。

下面有一些詳細的示例:

iconv —將字符串轉換為請求的字符編碼

(pHp 4> =4.0.5,pHp5)

mb_convert_encoding —轉換字符編碼

(pHp 4> =4.0.6,pHp5)

用法:

字符串mb_convert_encoding(字符串str,字符串to_encoding [,混合from_encoding])

您需要先啟用mbstring擴展庫,然后刪除; extension = php_mbstring.dll在前面;在php.ini中

mb_convert_encoding可以指定多種輸入編碼,它將根據(jù)內(nèi)容自動識別,但是執(zhí)行效率比iconv差很多;

字符串iconv(字符串in_charset,字符串out_charset,字符串str)

注意:第二個參數(shù)除了指定要轉換的編碼之外,還可以添加兩個后綴:// TRANSLIT和// IGNORE,其中// TRANSLIT將自動更改無法直接轉換為一個的字符更多類似的字符,// IGNORE將忽略無法轉換的字符,默認效果是從第一個非法字符開始切斷。

失敗時返回轉換后的字符串或FALSE。

使用:

發(fā)現(xiàn)iconv將字符“ —”轉換為gb2312時會出錯。如果沒有ignore參數(shù),則無法保存字符后的所有字符串。在任何情況下,該“ —”都無法成功轉換,也無法輸出。此外,mb_convert_encoding沒有此錯誤。

通常,使用iconv,并且僅在無法確定原始編碼或轉換后無法正常顯示iconv時,才使用mb_convert_encoding函數(shù)。

from_encoding由轉換前的字符代碼名稱指定。它可以是數(shù)組或字符串逗號分隔的枚舉列表。如果未指定,則將使用內(nèi)部編碼。

/ *自動檢測JIS,eucjp-win,sjis-win的編碼,然后將str轉換為UCS-2LE * /

$ str = mb_convert_encoding($ str,“ UCS-2LE”,“ JIS,eucjp-win,sjis-win”);

/ *“自動”擴展為“ ASCII,JIS,UTF-8,EUC-Jp,SJIS” * /

$ str = mb_convert_encoding($ str,“ EUC-Jp”,“ auto”);

示例:

復制代碼,代碼如下:

$ content = iconv(“ GbK”,“ UTF-8”,$ content);

$ content = mb_convert_encoding($ content,“ UTF-8”,“ GbK”);

在pHp中使用mb_convert_encoding轉碼的小陷阱

每個人都熟悉使用mb_convert_encoding()方法進行php程序中的字符編碼轉換,并且在平時也大量使用它??偟膩碚f,這種方法也表現(xiàn)出色,值得稱贊。但是在一個項目中,我們需要使用它將UTF8轉換為GbK,并且在轉換某些特殊字符時發(fā)現(xiàn)了一個小問題。特定的性能是mb將可以在utf8中編碼但不能在gbk中編碼的字符轉換為\ 0x00 \ 0x80,這導致轉換后的gbk字符有問題。

在我們的思想中,在字符編碼轉換過程中,如果遇到目標編碼無法表達的字符,那么代碼轉換程序應該做的就是丟棄該字符,以便盡管丟失了一些數(shù)據(jù),但是不會導致轉碼的字符序列不可用。尚不清楚mb為什么使用上述方法而不是放棄它。

臨時解決方案是過濾轉碼后的字符串序列php url編碼轉換,以過濾掉\ x00 \ 80的所有字符;或在轉義之前過濾utf8字符串以過濾出可以表示的ut8和gbk對于所有無法表示的字符,從實現(xiàn)難度上來說php url編碼轉換,第一種過濾方法相對容易實現(xiàn)。

新聞名稱:pHp中的另外一個函數(shù)iconv也是用來轉換編碼的
文章轉載:http://www.bm7419.com/news37/299337.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、域名注冊、外貿(mào)網(wǎng)站建設、網(wǎng)站維護、軟件開發(fā)、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設