close
使用者反映,有一個頁面上的資料會出現問號,後來我發現問題是該頁面會先載入一份 Big5 文字檔,內容有這樣的文字:
分子/分母
因為頁面最終會把內容全部整理好後以 UTF-8 輸出,這段字串會經由 mb_convert_encoding($string,"utf-8","big5") 處理,全型的斜線就會變成問號:
分子?分母
但以前在 PHP 7 以前沒有人反映過這個頁面有問題,搜尋一下,在 "PHP8.1: mb_convert_encoding not working with ASCII chars above 127" 這篇有人提到,他原始輸入的文字是 "ü",但是會被轉換為 "?"。原本他的 mb_convert_encoding 是將 ANSII 轉為 UTF-8,最後他的解法是 ISO-8859-1 轉為 UTF-8。
在 3v4l 試跑,可以發現原本的編碼組合,在 PHP 8.0 版本跑起來還能正常顯示,但到了 PHP 8.1 版本開始就會變成問號了。截至目前 8.2rc7 還未更新,但新版看起來似乎會修改?靜待修正中。
我試著換了幾種編碼,目前都無法正常將 Big5 的符號正確轉換到 UTF-8。目前是先將資料改為半形符號。等找到更合適的解法再來更新。
文章標籤
全站熱搜
留言列表