PHP iconv 函式字元編碼轉換的問題講解

2022-03-14 02:47:02 字數 2558 閱讀 3634

把gb2312置換成utf-8

$text=iconv("gb2312","utf-8",$text);

在用$text=iconv("utf-8","gb2312",$text)過程中,如果遇到一些特別字元時,如:"—",英文名中的"."等等字元,轉換就斷掉了。這些字元後的文字都沒法繼續轉換了。

針對這的問題,可以用如下**實現:

1$text=iconv("utf-8","gbk",$text);

你沒有看錯,就這麼簡單,不使用gb2312,而寫成gbk,就可以了。

還有一種方法,第二個引數,加上//ignore,忽略錯誤,如下:

1iconv("utf-8","gb2312//ignore",$data);

沒有具體比較這兩種方法,感覺第一種(gbk代替gb2312)方法更好。

mb_convert_encoding與iconv函式介紹

mb_convert_encoding這個函式是用來轉換編碼的。原來一直對程式編碼這一概念不理解,不過現在好像有點開竅了。不過英文一般不會存在編碼問題,只有中文資料才會有這個問題。比如你用zend studio或editplus寫程式時,用的是gbk編碼,如果資料需要入資料庫,而資料庫的編碼為utf8時,這時就要把資料進行編碼轉換,不然進到資料庫就會變成亂碼。

做乙個gbk to utf-8:12

34<?php

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

echomb_convert_encoding("妳系我的友仔","utf-8","gbk");

?>

再來個gb2312 to big5:12

34<?php

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

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

?>

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

string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )需要先enable mbstring 擴充套件庫,在 php.ini裡將; extension=php_mbstring.dll 前面的 ; 去掉mb_convert_encoding 可以指定多種輸入編碼,它會根據內容自動識別,但是執行效率比iconv差太多;

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

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

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

$content= mb_convert_encoding($content,"utf-8″, "

php iconv轉編碼 資料丟失的解決方法

今天在處理抓取內容的時候,當採用iconv進行編碼轉換的時候,發現結果會中斷,猜是字符集的問題,考慮怎麼跳過目標字符集不存在的字元,查手冊發現iconv的函式只有三個引數,好像不行,然後查網上有人說可以,但是很奇怪怎麼實現,最後發現英文描述有說可以加標識到目標編碼後面 translit 很鬱悶怎麼加...

全形轉半形函式 全形數字轉半形數字

private static char doublebytetohalfangle char c byte bs system.text.encoding.unicode.getbytes cs,0,1 if bs.length 2 return cs 0 private static string...

數字轉字串

數字換字串效率,寫了個 測試了下,發現最快方式是數字後面直接拼接空字串。public class a system.out.println 使用方法轉換用時 system.currenttimemillis s s system.currenttimemillis for double d 0 d ...