php socket亂碼的解決辦法:首先通過「mb_detect_encoding(socket_last_error($socket))」方法對錯誤資訊的編碼進行檢查;然後將錯誤資訊轉為「UTF-8」編碼即可。
PHP編寫socket錯誤資訊亂碼問題
問題
由於php專案預設都是使用的UTF-8編碼,由於使用socket程式設計時的報錯資訊不是使用的UTF-8編碼,導致輸出的錯誤在瀏覽器和控制台上顯示的都是亂碼。
錯誤提示如下:
socket_connect(): unable to connect [10061]: ???????????????????????????
處理過程
1.首先,通過以下程式碼對錯誤資訊的編碼進行檢查
mb_detect_encoding(socket_last_error($socket))
結果輸出為ASCII。
2.通過第一步的檢查結果可知錯誤資訊的編碼不是UTF-8,所以需要將錯誤資訊轉為UTF-8編碼。可通過以下函數實現:
function doEncoding($str){ $encode = strtoupper(mb_detect_encoding($str, ["ASCII",'UTF-8',"GB2312","GBK",'BIG5'])); if($encode!='UTF-8'){ $str = mb_convert_encoding($str, 'UTF-8', $encode); } return $str; }
通過該程式碼轉換之後輸出結果正常
socket_connect() failed. Reason: 由於目標計算機積極拒絕,無法連線。
更多相關知識,請存取PHP中文網!
以上就是怎麼解決php socket亂碼問題的詳細內容,更多請關注TW511.COM其它相關文章!