日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > php iconv() 編碼轉(zhuǎn)換出錯(cuò) Detected an illegal character

php iconv() 編碼轉(zhuǎn)換出錯(cuò) Detected an illegal character

來源:程序員人生   發(fā)布時(shí)間:2013-11-20 01:03:30 閱讀次數(shù):3193次

原型:string iconv ( string $in_charset , string $out_charset , string $str )

特別是第二個(gè)參數(shù)說明:the output charset.

用iconv()轉(zhuǎn)換一個(gè)輸出字符編碼不支持的字符時(shí),如iconv('utf-8', 'gb2312', 'www.phpfensi.com'),會(huì)遇到這樣的錯(cuò)誤提示:notice: iconv() [function.iconv]: detected an illegal character in input string ...

因?yàn)間b2312表示的是簡體中文,不支持像"www.phpfensi.com"之類的更為復(fù)雜的漢字以及一些特殊字符,這當(dāng)然會(huì)報(bào)錯(cuò)了,解決辦法有兩種:

1. 擴(kuò)大輸出字符編碼的范圍,如iconv('utf-8', 'gbk', 'www.phpfensi.com'),則可以正確地輸出,因?yàn)間bk支持的字符范圍更廣;

2. 在輸出的字符編碼字符串后面加上"//ignore",如iconv('utf-8', 'gb2312//ignore', 'www.phpfensi.com'),這樣做其實(shí)是忽略了不能轉(zhuǎn)換的字符,避免了出錯(cuò)但卻不能夠正確地輸出(即空白不、輸出)。

下面來看看關(guān)于php教程 iconv() : detected an illegal character in input string處理方法:

  1. $str = iconv('utf-8''gbk//ignore', unescape(isset($_get['str'])? $_get['str']:'')); 

本地測試//ignore能忽略掉它不認(rèn)識(shí)的字接著往下轉(zhuǎn),并且不報(bào)錯(cuò),而//translit是截掉它不認(rèn)識(shí)的字及其后面的內(nèi)容,并且報(bào)錯(cuò)。//ignore是我需要的。

在網(wǎng)上找到下面這篇文章,發(fā)現(xiàn)mb_convert_encoding也可以,但效率比iconv差,轉(zhuǎn)換字符串編碼iconv與mb_convert_encoding的區(qū)別:

iconv — convert string to requested character encoding(php 4 >= 4.0.5, php 5)

mb_convert_encoding — convert character encoding(php 4 >= 4.0.6, php 5)

用法:

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

需要先啟用 mbstring 擴(kuò)展庫,在 php.ini里將; extension=php_mbstring.dll 前面的 ; 去掉

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

注意:第二個(gè)參數(shù),除了可以指定要轉(zhuǎn)化到的編碼以外,還可以增加兩個(gè)后綴://translit 和 //ignore,其中://translit 會(huì)自動(dòng)將不能直接轉(zhuǎn)化的字符變成一個(gè)或多個(gè)近似的字符,//ignore 會(huì)忽略掉不能轉(zhuǎn)化的字符,而默認(rèn)效果是從第一個(gè)非法字符截?cái)唷?/p>

returns the converted string or false on failure.

使用:

1. 發(fā)現(xiàn)iconv在轉(zhuǎn)換字符"-"到gb2312時(shí)會(huì)出錯(cuò),如果沒有ignore參數(shù),所有該字符后面的字符串都無法被保存。不管怎么樣,這個(gè)"-"都無法轉(zhuǎn)換成功,無法輸出。另外mb_convert_encoding沒有這個(gè)bug.

2. mb_convert_encoding 可以指定多種輸入編碼,它會(huì)根據(jù)內(nèi)容自動(dòng)識(shí)別,但是執(zhí)行效率比iconv差太多;如:$str = mb_convert_encoding($str,"euc-jp","ascii,jis,euc-jp,sjis,utf- 8");“ascii,jis,euc-jp,sjis,utf-8”的順序不同效果也有差異

3. 一般情況下用 iconv,只有當(dāng)遇到無法確定原編碼是何種編碼,或者iconv轉(zhuǎn)化后無法正常顯示時(shí)才用mb_convert_encoding 函數(shù)

  1. 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. 
  2. $str = mb_convert_encoding($str"ucs-2le""jis, eucjp-win, sjis-win"); 
  3. $str = mb_convert_encoding($str"euc-jp', "auto"); 

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产在线精品一区二区三区 | 毛片在线免费播放 | 99r久久 | 中文成人在线 | 99视频在线播放 | 欧美视频福利 | 97欧美| 麻豆精品久久久 | 成人国产精品入口免费视频 | 国产日本在线视频 | 黄版视频在线观看 | 亚洲欧美综合精品久久成人 | 麻豆视频在线 | 日本亚洲精品 | 国产福利在线导航 | 欧美在线不卡视频 | 久久久久久久久久国产精品 | 亚洲成人一区二区三区 | 黄色毛片网站 | 九九精品在线视频 | 九九热视频在线 | 欧美一区二区三区电影 | 欧美日韩高清在线观看 | 成人久久久久久久 | 久久久久久影院 | 成人黄色一级毛片 | 综合久久久久久久久久 | av片在线看 | 久久aa | 热re99久久精品国产99热 | 亚洲视屏| www.888www看片 | 99精品国产九九国产精品 | 国产精品久久久久久久久免费蜜臀 | 三级无遮挡污在线观看 | 亚洲国产一区二区在线 | 久久6热视频| 国产精品综合一区二区 | 久久国产精品伦理 | 91精品久久久久久久久久不卡 | 国产综合激情 |