iconv的錯誤問題

迷路
網站搬移時發生的問題
在舊主機時,iconv()的IGNORE可以正常的運作,但是搬到新主機時卻會發生錯誤並中斷
以下是測試
<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
	header("Content-Type:text/html;charset=big5");
	$str = "凃測試";
	echo iconv("utf-8", "big5//IGNORE", $str);
	//echo mb_convert_encoding($str, "big5", "utf-8");
?>

某些特殊字元(通常是生僻字)和簡體字會導致錯誤發生並中斷
錯誤訊息如下:
Notice: iconv(): Detected an illegal character in input string

但是//IGNORE應該可以阻止中斷,跳過無法轉換的字元繼續執行才對
雖然更換mb_convert_encoding函數可以解決
但還是想請問有人知道原因嗎?
同樣的測試在舊主機就能正常執行
感覺應該是主機的設定或是版本導致的問題

最有價值解答

浩瀚星空
iconv其實是早該棄用了。

IGNORE之前我的理解的確跟你一樣。最多就是不要出現空白。
可是那是指找不到字的情況。

但在找到字發生不正常的情況。很常發生。
由其是針對big5這一個所謂的bug5。

就很常讓iconv掛掉。

我其實很久前就有遇過了。也早就棄用了。
後期考量效能問題,還是左寫個try來相對應處理。

現在則不會在使用big5編碼了。
迷路
是的
我基本也是不使用iconv和big5
無奈這是接手舊網站
功能又是需要輸出excel的檔案,所以必須用big5
最讓我納悶的是同樣的字在不同主機上出現不同的結果
浩瀚星空
excel如果是舊版的我不敢說。
但新版至少2010以上的樣子的,好像可以輸出utf8了。

以前我就被boss要求。excel字都要出現。
我靠!!big5缺字怎麼給他出現啊。

幸好後來改換成html輸出頁處理。要不然還真的死給他看。
迷路
最後還是只能乖乖地把函數替換掉
那台舊主機確實神奇
上面有一堆擺明了會出錯誤的語法都能正常執行
難道有甚麼設定是能讓每行程式自帶@開頭的效果嗎?
回到頂部