php系统函数socket_connect信息乱码

发布网友 发布时间:2022-04-06 06:40

我来回答

4个回答

懂视网 时间:2022-04-06 11:02

PHP编写socket错误信息乱码的解决办法:

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;
 }

通过该代码转换之后输出结果正常

相关学习推荐:PHP编程从入门到精通

热心网友 时间:2022-04-06 08:10

这种情况基本是编码的问题了,可以排查。

追问谁不知道是编码问题,我就是问为什么同一个编码格式,调用socket_connect连不上就会乱码,而通过socket_last_error 获取的错误信息就不会乱码

追答数据库、php代码、与编辑器设置的编码,都要一致,从这个方向去查,准没错。

热心网友 时间:2022-04-06 09:28

连接编码出错,头部加入hearder(utf8),或者采用mt_start(gbk,utf8)这个函数来转换下传过来的数据,这样就可以解决编码问题了。追问我都没开服务器的服务,怎么会有传过来的数据呢,这是连接不上服务器报的错,一个是直接显示在界面上了(乱码),一个是我通过函数socket_last_error 获取的错误信息(正常),现在是连接不上端口,底层报出来的错误显示乱码。我想问的是为什么同一个错误信息,为什么其中一个会显示乱码

热心网友 时间:2022-04-06 11:02

你还是用fsockopen

追问其实我通过@socket_connect也可以屏蔽这个报错信息,但我更想知道为什么会这样,这个socket_connect函数为什么会打印那些信息出来是乱码,而通过函数获取错误信息则不会乱码,有没有具体的编码设置?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com