笔记:PHP查询mysql数据后中文字符乱码
新建表Clubs
CREATE TABLE `Clubs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
id name
1 程序员
2 架构师
3 产品经理
4 测试
如果在phpMyAdmin中查看name字段内容就是?,修改MySQL 字符集选择UTF8,MySQL 连接校对选择utf8_general_ci
在mysql中查看字段内容为正确的中文字符后,通过mysql_query('select * from clubs')查询
用var_dump打印查询结果如下,所有的中文汉字都变成了?
array (size=4)
0 =>
array (size=2)
'id' => string '1' (length=1)
'name' => string '???' (length=3)
1 =>
array (size=2)
'id' => string '2' (length=1)
'name' => string '???' (length=3)
2 =>
array (size=2)
'id' => string '3' (length=1)
'name' => string '????' (length=4)
3 =>
array (size=2)
'id' => string '4' (length=1)
'name' => string '??' (length=2)
解决办法:在执行mysql_query之前先执行
mysql_query("set names utf8");
如果还不行,请确认php文件编码格式是否是utf8格式,同时在php文件头增加
header("Content-Type:text/html;charset=utf-8");
解决问题的根本办法就是把相关的编码格式都统一为utf8。
查询结果中文字符没问题了,但是$clubs转化为json时,name字段中文字符却又变了
$clubs=json_encode($clubs);
echo($clubs);
输出内容如下
[{"id":"1","name":"\u7a0b\u5e8f\u5458"},{"id":"2","name":"\u67b6\u6784\u5e08"},{"id":"3","name":"\u4ea7\u54c1\u7ecf\u7406"},{"id":"4","name":"\u6d4b\u8bd5"}]
解决方案:
foreach ( $clubs as $key => $value ) { foreach($value as $k=>$v){ $clubs[$key][$k] = urlencode($v);
} } $clubs=json_encode($clubs);
echo(urldecode($clubs));
原因:
json_encode只支持UTF8编码的字符,使用JSON作为提交和接收的数据格式时,字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题。解决办法是在用js或者PHP处理JSON数据的时候都采用UTF8的形式。
笔记:PHP查询mysql数据后中文字符乱码的更多相关文章
- android开发中 解决服务器端解析MySql数据时中文显示乱码的情况
首先,还是确认自己MySql账户和密码 1.示例 账户:root 密码:123456 有三个字段 分别是_id .username(插入有中文数据).password 1)首先我们知道 ...
- QT+VS后中文字符乱码问题
在VS中写QT项目会出现中文乱码现象,尤其是控件的中文乱码以及qDebug()时候中文乱码通用的解决办法: 在头文件(.h)前面加上如下代码: #ifdef WIN32 #pragma executi ...
- Dos中查看mysql数据时 中文乱码
使用jsp页面查看数据时可以正确显示中文,但是dos窗口查看数据时中文显示乱码. 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的 ...
- python查询mysql数据(3)
python查询mysql数据(3) """数据查询""" import pymysql import datetime from pymy ...
- JAVA的中文字符乱码问题
来源:http://luzefengoo.blog.163.com/blog/static/1403593882012754428536/ JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用 ...
- request接收表单提交数据及其中文参数乱码问题
一.request接收表单提交数据: getParameter(String)方法(常用) getParameterValues(String name)方法(常用) getParameterMap( ...
- 【已解决】python中文字符乱码(GB2312,GBK,GB18030相关的问题)
http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ [已解决]python中文字符乱码(GB2312,GB ...
- g++编译后中文显示乱码解决方案(c++)
g++编译后中文显示乱码解决方案 环境:Windows 10 专业版 GCC版本:5.3.0 测试代码: 1 #include <iostream> 2 using namespace ...
- 笔记-4:mysql数据查询
1.创建查询表 1.1 创建班级表 含义 字段名 数据类型 宽度 班级编号 classNo 字符型 6 班级名称 className 字符型 20 所属院系 department 字符型 30 年级 ...
随机推荐
- 将Axure用于需求分析工具
http://www.cnblogs.com/hnlong1/p/4113517.html?utm_source=tuicool 今年以来开始接触需求分析工作,uml是必用的建模语言. 一开始是使用最 ...
- 基于IHttpAsyncHandler的实时大文件传送器
在日常工作中,有时候需要到远程服务器上部署新版本的系统,由于远程服务器出于外网,所以每次都要开QQ连接,非常麻烦.索性就研究了下IHttpasyncHandler,并结合Juqery Progress ...
- Objective-c归档的概念和用法
‘
- Matlab txt内容替换函数 fgetl fseek
Data Import and Export :Low-Level File I/O the contents of the file: 16 5 9 4 2 ...
- Java系列: JAVA字符串格式化-String.format()的使用(zz)
常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重 ...
- 实验一报告 20135238&20135207
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1352 姓名:(按贡献大小排名)龚睿 王国伊 学号:(按贡献大小排 ...
- Linux第13周学习笔记
网络编程 客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型. 一个应用是由一个服务器进程和一个或者多个客户端进程组成. 服务器管理某种资源,并通过操作资源来为客户端提供某种服务. 基本操 ...
- Opencv step by step - 基本数据类型
CvArr,CvMat,IplImage这三者是继承的关系. 打开opencv 3.0的源码: cvArr /* CvArr* is used to pass arbitrary * array-l ...
- SQL温故系列两篇(二)
.Sql 插入语句得到自动生成的递增的ID值 Insert into Table(name,des,num) values(’ltp’,’thisisbest’,10); Select @@ident ...
- Java死锁的例子
死锁 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. 导致死锁的根源在于不适当地运用“synchronized”关 ...