PHP如何处理查询MySQL数据库中文乱码?

1、将MySQL数据库默许的编码是UTF-8;

2、在MySQL中建立表时,将字符集设置为UTF-8;

3、在PHP中查询数据之前,将数据库编码设置为UTF-8即可。

MySQL的“SET NAMES x”字符集问题剖析

最近接收BBT的培训,做一个投票体系。体系代码倒不是很难,然则我的时候重要消费在了研讨字符集和编码上面。MySQL和Apache两个体系的编码(字符集)问题让我费力头脑,吃尽苦头。网上对这些问题的处理比较零星,比较单方面,大部分是供应处理方法,却不说为何。因而我将这几天收成总结一下,防止后来者再走弯路。这篇文章对PHP编写有一点协助(看完你就晓得,如何让你的PHP程序在大部分空间供应商的服务器里显现一般),然则更多协助在于网络服务器的架设和设置。

先说MySQL的字符集问题。Windows下可经由历程修正my.ini内的

# CLIENT SECTION

[mysql]

default-character-set=utf8

# SERVER SECTION

[mysqld]

default-character-set=utf8

这两个字段来变动数据库的默许字符集。第一个是客户端默许的字符集,第二个是服务器端默许的字符集。假定我们把两个都设为utf8,然后在MySQL Command Line Client内里输入“show variebles like “character_set_%”;”,可看到以下字符:

character_set_client latin1

character_set_connection latin1

character_set_database utf8

character_set_results latin1

character_set_server utf8

character_set_system utf8

个中的utf8跟着我们上面的设置而修改。此时,假如我们经由历程采纳UTF-8的PHP程序从数据库里读取数据,很有多是一串“?????” 或者是其他乱码。网上查了半天,处理办法却是简朴,在衔接数据库以后,读取数据之前,先实行一项查询“SET NAMES UTF8”,即在PHP里为

mysql_query("SET NAMES UTF8");

即可显现一般(只需数据库里信息的字符一般)。为何会如许?这句查询“SET NAMES UTF8”究竟是什么作用?

到MySQL命令行输入“SET NAMES UTF8;”,然后实行“show variebles like “character_set_%”;”,发明本来为latin1的那些变量“character_set_client”、“character_set_connection”、“character_set_results”的值悉数变成utf8了,本来是这3个变量在作怪。查阅手册,上面那句即是:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

看看这3个变量的作用:

信息输入途径:client→connection→server;

信息输出途径:server→connection→results。

换句话说,每一个途径要经由3次转变字符集编码。以涌现乱码的输出为例,server里utf8的数据,传入connection转为latin1,传入results转为latin1,utf-8页面又把results转过来。假如两种字符集不兼容,比方latin1和utf8,转化历程就为不可逆的,破坏性的。所以就转不回来了。

但这里要声明一点,“SET NAMES UTF8”作用只是暂时的,MySQL重启后就恢复默许了。

接下来就说到MySQL在服务器上的设置问题了。岂不是我们每次对数据库读写都得加上“SET NAMES UTF8”,以保证数据传输的编码一致?能不能经由历程设置MySQL来到达那三个变量默许就为我们要想的字符集?手册上没说,我在网上也没找到答案。所以,从服务器设置的角度而言,是没办法省略掉那行代码的。

引荐教程:《PHP》《MySQL教程》

以上就是PHP如何处理查询MySQL数据库中文乱码?的细致内容,更多请关注ki4网别的相干文章!

收藏 | 0

php查询mysql数据库乱码_PHP怎样处理查询MySQL数据库中文乱码?_后端开发相关推荐

  1. centos php 中文乱码,XShell连接CentOS 7.2显示中文乱码问题的解决方法

    背景 使用U盘往Windows主机.Linux主机传文件还是经常的事,但有时候文件名有中文, 传到Linux机器会有乱码,选择起来也很麻烦,最近刚好遇到,写下解决方法. 环境 Linux [root@ ...

  2. php mssql 字段名中文,php mssql中文乱码怎么办_后端开发

    PHP $_POST提交表单中文乱码问题_后端开发 PHP $_POST提交表单乱码解决方法:在代码头部加入"echo '';"即可解决提交数据乱码问题.php mssql中文乱码 ...

  3. medoo php 教程,PHP数据库框架Medoo1.6安装教程_后端开发

    PHP如何删除一个路径下的所有文件夹和文件?_后端开发 PHP如何删除一个路径下的所有文件夹和文件?下面本篇文章给大家介绍一下PHP删除一个路径下的所有文件夹和文件的方法.有一定的参考价值,有需要的朋 ...

  4. mysql连接字符乱码_MySQL 字符集导致SQL连接之后中文乱码的问题!

    character-set-server = GB2312 collation-server = latin1_general_ci MySQL字符集 GBK.GB2312.UTF8区别 解决 MYS ...

  5. java中文乱码 寮犱笁_MySQL命令窗口中文乱码或插入中文数据失败

    在Windwos上使用命令窗口操作MySQL数据库时,如果命令窗口的字符编码与数据库不一致时,就会出现中文乱码的情况 比如查询会出现中文乱码,或者插入数据会出现错误"ERROR 1366 ( ...

  6. java tcp 乱码_Java和C++通过Socket通信中文乱码的解决

    理想的开发状态是我开始就是C开发,一直是C的开发,现在还是C的开发,若干年后,幸运的话,我可以成为C语言的高手或者专家-- 更实际的情况是我开始是C开发,后来变成了JAVA开发,然后又做起了VC++的 ...

  7. oracle utf-8中文乱码,修改Oracle字符集为UTF-8 解决中文乱码 oracle

    很多情况下,遇到数据库查询数据中文乱码,一般都是字符集的问题,下面记录一下oracle字符集的查看方法,并提供UTF-8字符集的修改方式. 1.查看数据库字符集 以下操作均在sqlplus或客户端中执 ...

  8. create显示中文乱码 qt_Ubuntu下Qt串口助手接收中文乱码问题

    问题描述: 在ubuntu中用Qt开发的串口助手,在接收单片机(STM32 F103)发来的中文时,出现乱码情况. 接收中文乱码 问题已解决,感谢Qt交流qq群中的各位大佬. 解决思路: 可以检查一下 ...

  9. plsql远程oracle 乱码,oracle11g_64位连接32位PLSQL中文乱码

    当我们装了64位的oracle11g,然而发现PLSQL没有64位的,这时会造成了我们连接的麻烦,怎么将oracle11g_64位连接32位PLSQL的方法这里就不介绍了.当我们连接成功后却发现用PL ...

最新文章

  1. 最初的梦想,将来的你一定会感谢现在努力的自己
  2. 美国正在衰落的24个行业:“猝不及防”还是“温水煮青蛙”?
  3. HTML DOM节点的增删改查
  4. Java的Map接口,以及Collection和Collections的区别
  5. Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)
  6. SAP UI5 ABAP repository的handler class
  7. leetcode105 前序中序遍历序列构造二叉树
  8. mysql 备份 windows_windows mysql 自动备份的几种方法
  9. ctfshow-萌新-web11( 利用命令执行漏洞获取网站敏感文件)
  10. 微软11月补丁星期二值得关注的6个0day及其它
  11. Spark 基础 —— class与object,面向对象、类与伴生对象(companion object)
  12. [译]如何成为一个优秀的前端工程师
  13. FPGA定点数字信号处理技巧(一)
  14. Tiled Map的使用说明
  15. 抽象代数基本概念(一):代数系
  16. 如何带领好一个团队,管理的五条实用建议告诉你
  17. 洛谷 P1489 猫狗大战
  18. 试穿APP的NABCD
  19. 2021年成都列五高中高考成绩查询,2021年成都高考各高中成绩及本科升学率数据排名及分析...
  20. 实现自己的首字母索引导航列表(二)——拼音首字母分类列表

热门文章

  1. JS作用域链(转载)
  2. Stackint stack = new Stackint报错原因
  3. 系统下装软件_DCS系统的日常保养工作怎么做
  4. 从零开始学前端:列表标签 --- 今天你学习了吗?(CSS:Day06)
  5. python wmi 显卡型号_python - wmi模块学习(windwos硬件信息获取)
  6. 1000道Python题库系列分享十(37道)
  7. 关于Python局部变量和全局变量必须知道的几句话
  8. 怎么把github上的东西传到码云_Git同步更新操作GitHub和码云仓库上面的代码
  9. python的线程组怎么写_Python高级——多任务编程之线程
  10. python3.7输出语句_python3.4用循环往mysql5.7中写数据并输出的实现方法