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: 由於目標計算機積極拒絕,無法連接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章