之前改到某知名公司所做的的ERP系統,用的是MS-SQL
因為查詢有點慢,所以想要做一個local cache來做一點暫存
用PHP的iconv算是很一般的做法,可是裡面有點問題
以下是測試的CODE:
header("Content-type: text/html; charset=utf-8"); $string = "轉碼測試功蓋銹abc轉碼測試"; $result = iconv("big5","UTF-8",$string); echo $result;印出的結果:
轉碼測試功蓋明顯可以看到這不是許功蓋的錯
稍微查一下,照這個網站說的
"libiconv 不認得七個 BIG5 擴充字:碁, 銹, 裏(請改用'裡'), 墻, 恒, 粧, 嫺,無法將之轉換成對應的 UTF-8;但 Windows API 認得且可以轉換成 UTF-8。"
使用了
php中由"big5轉utf8,iconv不是個負責任的函數"的解法後,轉出的情形如下
轉碼測試功蓋 abc轉碼測試
雖然掉字問題獲得解決,可是也只是跳過而已,並沒有轉出
這時發現另外一個函式:mb_convert_encoding
好像就能解決這個問題,程式碼如下:
$string = "轉碼測試功蓋銹abc轉碼測試"; $result = mb_convert_encoding($string,"utf-8","big5"); echo $result;
mb_convert_encoding的速度好像會比iconv慢不少,不過對於這次的工作來說似乎沒有影響