[請益] Default charset for htmlspecialchars()

看板PHP作者 (macarthur628)時間8年前 (2016/01/01 22:19), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
我是用 Linux Mint 17.3, 目前遇到 htmlspecialchars()無法處理 big5字串的問題. big5_str.php的範例程式如下: <?php echo ini_get("default_charset"); echo "\n"; $big5Str = "系統管理"; echo htmlspecialchars($big5Str, ENT_QUOTES); echo "\n"; echo htmlspecialchars($big5Str, ENT_QUOTES, 'BIG5'); echo "\n"; ?> locale設定如下: ~ $ locale LANG=zh_TW.UTF-8 LANGUAGE= LC_CTYPE="zh_TW.UTF-8" LC_NUMERIC="zh_TW.UTF-8" LC_TIME="zh_TW.UTF-8" LC_COLLATE="zh_TW.UTF-8" LC_MONETARY="zh_TW.UTF-8" LC_MESSAGES="zh_TW.UTF-8" LC_PAPER="zh_TW.UTF-8" LC_NAME="zh_TW.UTF-8" LC_ADDRESS="zh_TW.UTF-8" LC_TELEPHONE="zh_TW.UTF-8" LC_MEASUREMENT="zh_TW.UTF-8" LC_IDENTIFICATION="zh_TW.UTF-8" LC_ALL= big5_str.php執行的結果如下: ~ $ php big5_str.php | iconv -f big5 -t utf8 BIG5 系統管理 請問我已經在 php.ini加上 default charset設定, default_charset = "BIG5" 呼叫 htmlspecialchars()時, 為何還是要加上第三個 $encoding參數, 才能正常顯示 big5字串的內容? 有沒有辦法只給兩個參數就能正常顯示 big5字串? 請不吝指教, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.161.195.210 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1451657949.A.7E6.html

01/02 00:18, , 1F
你的這個 php 網頁是存成 big5 還是 utf-8 ?
01/02 00:18, 1F

01/02 00:21, , 2F
根據 php.net 說明, PHP 5.6 以上的才支援 ini 裡面的設
01/02 00:21, 2F

01/02 00:21, , 3F
定否則預設都是 utf-8
01/02 00:21, 3F

01/02 07:38, , 5F
網頁是存成 big5, 目前使用的 php版本是 5.5.9
01/02 07:38, 5F

01/02 07:42, , 6F
這段程式在 5.2.10上面的執行結果, 符合我的預期.
01/02 07:42, 6F

01/02 07:43, , 7F
如你所述, 看起來是 php版本之間的差異造成的, 謝謝
01/02 07:43, 7F
文章代碼(AID): #1MXehTVc (PHP)