首页 / PHP / PHP中mysqli出错信息为乱码
PHP中mysqli出错信息为乱码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP中mysqli出错信息为乱码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3233字,纯文字阅读大概需要5分钟。
内容图文
用 PHP 的 mysqli 创建数据库连接时的出错信息显示为乱码。
代码如下:
尚未安装 mysql,只是想看一下 mysqli 在未安装 mysql 时的出错信息。而得到的结果如下:
在 chrome 和 IE11 下均为乱码。
由检查工具得到 http response header 中的 charset 为 utf-8,而 chrome 和 IE11 的默认设置也均为 utf-8。此外,php 文件本身以及 Apache 和 PHP 的默认编码设置也均为 utf-8。
目前推测是 mysqli 本身的问题,因为图中乱码的部分与 mysqli_connect_error()
得到的乱码一致。
由 mb_detect_encoding($conn->connect_error)
检测编码得到的结果显示,错误信息的编码也是 utf-8。
如何解决?
无意冒犯,但是鉴于很多答主尚未仔细阅读问题描述就匆忙下定论,我决定重复一下重要的事情:
没有安装 MySQL!
没有安装 MySQL!
没有安装 MySQL!
我只是想知道 mysqli 在没有安装 MySQL 的情况下得到的错误信息是什么。然而这个错误信息居然是乱码,所以才有了这个问题。
进展:在 console 中用 php 解释器运行能够得到正确的错误信息,而且发现是中文,如下图所示:
这个出错信息是由 Windows 系统的网络通信相关模块提供的(之前在代理服务器配置错误的情况下也经常在日志中看到这样的错误信息),所以目测这个锅要由 Win10 来背。
问题依然没有解决。虽然是中文,但是尝试了以 GB2312、GBK、GB18030 方式显示,亦为乱码,只不过乱码内容不同罢了。
回复内容:
用 PHP 的 mysqli 创建数据库连接时的出错信息显示为乱码。
代码如下:
尚未安装 mysql,只是想看一下 mysqli 在未安装 mysql 时的出错信息。而得到的结果如下:
在 chrome 和 IE11 下均为乱码。
由检查工具得到 http response header 中的 charset 为 utf-8,而 chrome 和 IE11 的默认设置也均为 utf-8。此外,php 文件本身以及 Apache 和 PHP 的默认编码设置也均为 utf-8。
目前推测是 mysqli 本身的问题,因为图中乱码的部分与 mysqli_connect_error()
得到的乱码一致。
由 mb_detect_encoding($conn->connect_error)
检测编码得到的结果显示,错误信息的编码也是 utf-8。
如何解决?
无意冒犯,但是鉴于很多答主尚未仔细阅读问题描述就匆忙下定论,我决定重复一下重要的事情:
没有安装 MySQL!
没有安装 MySQL!
没有安装 MySQL!
我只是想知道 mysqli 在没有安装 MySQL 的情况下得到的错误信息是什么。然而这个错误信息居然是乱码,所以才有了这个问题。
进展:在 console 中用 php 解释器运行能够得到正确的错误信息,而且发现是中文,如下图所示:
这个出错信息是由 Windows 系统的网络通信相关模块提供的(之前在代理服务器配置错误的情况下也经常在日志中看到这样的错误信息),所以目测这个锅要由 Win10 来背。
问题依然没有解决。虽然是中文,但是尝试了以 GB2312、GBK、GB18030 方式显示,亦为乱码,只不过乱码内容不同罢了。
在你的环境下,用PHP输出中文是否正常?
有没有加上header('Content-type: text/html; charset=utf-8');
?
手动改一下Chrome的编码试试看?
我在电脑上试了试,三个结论:1.你的php页面没有用html的charset设置页面为utf8编码,因为php最终反馈给浏览器的还是纯的html。2.返回的压根就不是utf8,举个例子,返回的gbk,你在页面上设置的是utf8,而浏览器却是GB2312。3.可能是你哪里的配置有问题而你没发现,而且我们也查看不到你电脑上和这个有关的信息,结题吧,没必要盲目的让大家去试了。
设置一下浏览器编码应该就可以,应该不是mysqli的原因,而且写法也错了
你安装的MySQL数据库编码默认为GBK了,建议更改默认编码 保证前端后端和数据库编码的统一,如果设置统一后还不行,那需要MySQL在执行前查询一个set names utf 8
来保证缓冲区内容为utf8格式
之前没看作者题目内容中没有安装MySQL,所以删除。
但实际应该是因为mysqlnd扩展
既然是握手时返回字符集 所以应该与系统字符集有关 建议先安装MySQL试试吧安装后指定字符串utf8
数据库连接设置里面加上设置编码的设置mysqli_query('set name UTF8');
内容总结
以上是互联网集市为您收集整理的PHP中mysqli出错信息为乱码全部内容,希望文章能够帮你解决PHP中mysqli出错信息为乱码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。