把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"
);
echo
mb_convert_encoding(
"妳系我的友仔"
,
"utf-8"
,
"gbk"
);
?>
再來個gb2312 to big5:12
34<?php
header(
"content-type: text/html; charset=big5"
);
echo
mb_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 ...