在将项目webserver从windows移植到linux下时发现了一个异常状况。linux
项目状况为服务端使用PHP+nginx搭建的webserver,客户端使用C++,通讯使用json字符串,具体流程为服务端将通讯的数据对象转换为json字符串返回给客户端,在客户端经过解析该字符串初始化对应的C++对象。nginx
异常状况为将服务端移植到linux环境下,客户端收到的服务器返回的json字符串在开头的6个字节为乱码,截图以下:web
图中 大括号以后的字符串为传输的数据,而以前的3个中文字符为无效数据。在移植过程当中服务端的代码没有进行任何的改动,PHP的版本也和windows下的一致,但就是返回的字符串开头会固定6个字节的无效字符,暂时还未找到缘由,目前的解决方案为在客户端中加了对开头无效字符的过滤。json
敬请遇到过该问题的大神指教其中缘由,不胜感激。windows
补充个服务端返回json字符串的PHP文件截图:服务器
其中seneMsg函数即为返回json字符串给客户端,echo 后的内容即为客户端收到的内容,服务端的代码文件格式都为函数
UTF-8 无BOM编码。编码