PHP Socket or TCP 連接錯誤信息顯示亂碼問題處理


錯誤說明

在項目中編碼都是使用UTF-8編碼。當用到Socket或者TCP連接的時候出現錯誤,錯誤信息不是UTF-8的編碼,所以輸出看到的是亂碼且在輸出json格式輸出的時候是空白

比如在本地位win7系統: 錯誤信息提示: Can not connect to tcp://127.0.0.1:1238 ����Ŀ�����������ܾ����޷����ӡ�

使用函數檢查上面錯誤信息編碼為 EUC-CN,EUC-CN就是GBK2312編碼的別名。

封裝函數處理:檢查錯誤信息如果不是UTF-8編碼的,轉換成UTF-8編碼

   /**
     * 處理亂碼的錯誤信息(比如socket,tcp。。。)
     * @param $str
     * @return null|string|string[]
     */
    public static 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;
    }

在linux系統環境中是沒有問題的,提示都是英文的:Can not connect to tcp://127.0.0.1:1238 Connection refused[1]

EUC-CN

EUC-CN是GB2312最常用的表示方法。瀏覽器編碼表上的“GB2312”,通常都是指“EUC-CN”表示法
參考: https://wapbaike.baidu.com/item/EUC-CN
參考: https://segmentfault.com/q/1010000006938661


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM