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