- extension_dir = "C:/ipaddr/php/extensions/"
-
複製代碼(注意,建議寫全地址,並且後面加上/,很多時候是因為這裡設定不對,才導致無法載入其它模組的dll的)再開啟:
- extension=php_gd2.dll
-
複製代碼但如果是安裝iconv.dll,按上面方法,開啟php_iconv.dll後,還是無法開啟iconv模組,需要如下配置:a.上iconv的官方下載網站http://ftp.gnu.org/pub/gnu/libiconv/下面Windows版的iconv檔案:libiconv-1.9.1.bin.woe32.zip將檔案解壓,將bin/下面的charset.dll,iconv.dll,iconv.exe拷貝到c:/windows/ (或其它的系統PATH中)(這步是必須的,php_iconv.dll也是調用GNU的iconv庫的,所以,先要安裝GNU的iconv庫) b.開啟php.ini裡面的php_iconv.dll c.重啟Apache,再在phpinfo();檢測是否開啟iconv。 在最近一個程式中,需要用到iconv函數把抓取來過的utf-8編碼的頁面轉成gb2312, 發現只有用iconv函數把抓取過來的資料一轉碼資料就會無緣無故的少一些。 這是iconv函數的一個bug。iconv在轉換字元"—"到gb2312時會出錯。 解決:在需要轉成的編碼後加 "//IGNORE" 也就是iconv函數第二個參數後.如下:
- iconv("UTF-8","GB2312//IGNORE",$data)
-
複製代碼ignore的意思是忽略轉換時的錯誤,如果沒有ignore參數,所有該字元後面的字串都無法被儲存。 這個iconv()這個函數,在php5中是內建的。來看一個完整的例子,如下:
//iconv用法舉例
- //by bbs.it-home.org
- echo $str= '你好,這裡是賣咖啡!';
- echo '
';
echo iconv('GB2312', 'UTF-8', $str); //將字串的編碼從GB2312轉到UTF-8
- echo '
';
echo iconv_substr($str, 1, 1, 'UTF-8'); //按字元個數截取而非位元組
- print_r(iconv_get_encoding()); //得到當前頁面編碼資訊
echo iconv_strlen($str, 'UTF-8'); //得到設定編碼的字串長度
//也可以這樣
- $content = iconv("UTF-8","gbk//TRANSLIT",$content);
- ?>
複製代碼 |