php iconv中文亂碼的解決方法:先下載libiconv函式庫,並安裝libiconv;然後重新編譯php;最後在需要轉成的編碼後加入參數「//IGNORE」即可。
推薦:《PHP影片教學》
php中iconv函式使用方法,解決中文亂碼
iconv函數函式庫能夠完成各種字元集間的轉換,是php程式設計中不可缺少的基礎函數函式庫。
1、下載libiconv函數庫libiconv-1.x.tar.gz;
2、解壓縮tar -zxvf libiconv-1.x.tar.gz;
#3、安裝libiconv
#configure --prefix=/usr/local/iconv #make #make install
4、重新編譯php 增加編譯參數--with-iconv=/usr/local/iconv
windows下
iconv函數把抓取來過的utf-8編碼的頁面轉成gb2312,只有用iconv函數把抓取過來的資料一轉碼資料就會無緣無故的少一些。
這是iconv函數的一個bug。 iconv在轉換字元"—"到gb2312時會出錯,解決方法很簡單,就是在需要轉成的編碼後加"//IGNORE" 也就是iconv函數第二個參數後.如下:
#以下為引用的內容:
iconv("UTF-8","GB2312//IGNORE",$data)
ignore的意思是忽略轉換時的錯誤,如果沒有ignore參數,所有該字元後面的字串都無法被保存。
iconv不是php的預設函數,也是預設安裝的模組。需要安裝才能用的。
如果是windows2000 php,你可以修改php.ini文件,將extension=php_iconv.dll前的";"去掉,同時你要copy你的原php安裝文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是這個目錄)
在linux環境下,用靜態安裝的方式,在configure時加多一項--with-iconv就可以了,phpinfo看得到iconv的項。
使用的簡單範例:
$zip = new ZipArchive();//打开文件 如果文件已经存在则覆盖,如果没有则创建 if($zip->open($destination,$overwrite?ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE)!==true){ return false; } //向压缩文件add the files foreach($valid_files as $file){ //$zip->addFile($file,$file); $file_info_arr= pathinfo($file); $filename =$file_info_arr['basename']; $filesss = iconv('UTF-8', 'GBK//IGNORE', $filename); $zip->addFile($file,$filesss); }
PHP中的mb_convert_encoding與iconv函數介紹
mb_convert_encoding這個函數是用來轉換編碼的。原來一直對程式編碼這個概念不理解,不過現在好像有點開竅了。
不過英文一般不會有編碼問題,只有中文資料才會有這個問題。例如你用Zend Studio或Editplus寫程式時,用的是gbk編碼,如果資料需要入資料庫,而資料庫的編碼為utf8時,這時就要把資料進行編碼轉換,不然進到資料庫就會變成亂碼。
mb_convert_encoding的用法請見官方:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php
#不過要使用上面的函數需要安裝但是需要先enable mbstring 擴充庫。
PHP中的另一個函數iconv也是用來轉換字串編碼的,與上函數功能相似。
下面還有一些詳細的範例:
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 [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 會忽略掉不能轉化的字符,而預設效果是從第一個非法字符截斷。
Returns the converted string or FALSE on failure.
使用:發現iconv在轉換字元」—」到gb2312時會出錯,如果沒有ignore參數,所有該字元後面的字串都無法被保存。不管怎麼樣,這個」—」都無法轉換成功,無法輸出。另外mb_convert_encoding沒有這個bug.
一般情況下用iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉換後無法正常顯示時才用mb_convert_encoding 函數.
PHP中使用mb_convert_encoding轉碼的小陷阱:
在php程式中使用mb_convert_encoding()方法進行字元編碼轉換大家都很熟悉了,平時也在大量的使用。而且在一般情況下該方法也表現的夠好,值得表揚。但在一個專案中我們需要使用它進行UTF8到GBK的轉換,在轉換一些特殊字元時發現了一個不大不小的問題。具體表現為mb把在utf8可編碼的字符而在gbk中不可編碼的字符都轉成了\0x00\0x80,這樣就導致轉換後的gbk字符是有問題的。
在我們的意識中,在進行字符編碼轉換的過程中,如果遇到目標編碼不可表現的字符,轉碼程序應該做的是捨棄這種字符,這樣雖然丟失了部分數據,但不會導致轉碼的字元序列不可用。不清楚mb為什麼要用上述方式而不是捨棄方式。
暫時的解決方式是對轉碼後的字串序列進行過濾,過濾掉所有\x00\80的字元;又或者在轉義之前對utf8的字串進行過濾,過濾掉ut8可表示而gbk不可表示的所有字符,從實現難度上來講,第一種過濾方式比較容易做到。
以上是php iconv中文亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6
視覺化網頁開發工具