php mysql 编码问题
php mysql 编码问题
问题:
PHP从数据库中读取数据,并echo出来,数据中文显示正常;但是echo出新定义的中文字符串,新定义的字符串会乱码。
由此可能是数据库中提取出来的中文编码和php的输出编码不一样。
操作:
在head中添加<meta charset="UTF-8">,定义页面编码。
问题:
PHP本身输出的中文编码正确了,但是从数据库中提取出来的中文编码错了。
由此可见,数据库提取出来的中文编码是可辨认的,在数据库中直接查询,也不会乱码。之后的乱码是因为数据库提取出来的中文编码与PHP本身输出的编码不同,选前者后者就乱码,选后者前者就乱码。
解决方法1:
$encode = mb_detect_encoding($sqldata, array("ASCII",'UTF-8',"GB2312","GBK"));
if ($encode == 'EUC-CN') {
$newsqldata = iconv('GBK', 'UTF-8', $sqldata);
echo $newsqldata;
echo "</br>";
}
查询数据库中提取中文的编码,是EUC-CN,gb2312的一种表示方式。使用iconv将GBK转换为UTF-8,则数据库提取的中文编码也是utf-8,与PHP本身输出相同,就不会乱码了
解决方法2:
数据库中的数据存入时是用python存入的,规定了连接方式为utf-8;在python中,所有数据也一致处理为utf-8再存入。
本身以为这样子就OK了,但是出了这个问题后,查看MySQL编码时,发现其gkb

所以单纯设定python连接编码、统一数据编码还不够,还需要修改数据库的编码。
所以要根源上处理该问题,就修改数据库的编码为utf-8。
解决方法3:
在mysql_query前执行以下命令
mysql_query("SET NAMES 'UTF8'");
博大精深的问题:https://blog.csdn.net/wzwsj1986/article/details/1723658
为了保险,还是加上吧,不管改了数据库的编码没有。
[ 另外 ]
MySQL ini设置编码为utf8,传入的也为utf8,但是在数据库中查询时,中文却是乱码的。
在数据库乱码的情况下,用数据库命令行 存入数据库数据,查询出来的时候就是乱码的。
但是命令行模式的数据库乱码,不影响存取,没关系,最可能的情况是
1. 当前DOS窗口的编码有问题。
2. 当前数据库session的编码有问题。
THAT'S ALL .
php mysql 编码问题的更多相关文章
- mysql编码的那点事
Mysql编码问题 在php页面可以向mysql插入英文字符,但就是不能插入中文字符,在cmd客户端也可从插入,这是困扰我两天的问题. 在网上找了很多资料,最终确定了是字符编码这个地方出现了问题,首 ...
- Linux(Ubuntu)使用日记------Mysql编码(utf-8)的设置
Mysq版本:5.7.21 操作系统:Linux(Ubuntu) 整个操作的基本思路如下(包括问题的解决思路,想要直接解决问题的可以先看最后的命令总结) 检查mysql编码 找到Mysql的配置文件 ...
- linux上设置mysql编码
linux下设置mysql编码 linux下设置mysql编码 首先查找MySql的cnf文件的位置: [root@flyHome gaoxiang]# find / -iname '*.cnf' - ...
- MYSQL进阶学习笔记一:MySQL编码设定,会话变量和全局变量!(视频序号:进阶_1-3)
知识点一:MySQL编码设定(1-2) 服务器编码设定: 查看MySQL服务器端的编码格式: SHOW VARIABLES LIKE ‘char%’; 设定编码格式: SET NAMES ‘utf8’ ...
- 关于mysql编码问题
1 查看MySQL编码 SHOW VARIABLES LIKE 'char%';
- 配置mysql 编码
配置mysql 编码 [client]default-character-set=utf8mb4 default-storage-engine=INNODB [mysql]default-charac ...
- mac mysql 编码配置
mac mysql 编码配置 (mysql目录下没有my.cnf) 想要修改编码发现自己的/usr/local/mysql/support-files里面根本没有my.cnf 安装方式是去mysql官 ...
- 【他山之石】mysql编码问题总结
有些问题可能比较基础,但是没有经过系统学习还是可能会出错,记录下. 这次是mysql的编码问题. 背景是部署新的测试环境,给了一台服务器还有在另一个环境下的mysql,配置过程中发现mysql编码有问 ...
- mysql编码设置
一:mysql字符集 mysql的字符集支持(Character Set Support)有两个类型:字符集(Character set)和连接校对(Collation).对于字符集的支持细化到四个层 ...
随机推荐
- Java感情
不知道怎么会执着于这一门语言.论速度的话,c那系更好一些,而且对底层的操控更多是c那边的.还是想通过Java做这些事. 对Java不怎么懂,它的底层实现是怎样的.只知道一个大体的思想,不知道具体步骤. ...
- 使用open live writer客户端写博客
注:Windows Live Writer 已经停止更新,建议安装 Open Live Writer,下载地址: http://openlivewriter.org/ 使用open live writ ...
- 快速理解VirtualBox的四种网络连接方式
VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...
- 【python】del
参考:http://blog.csdn.net/love1code/article/details/47276683 del 删除的是变量,不是数据! if __name__=='__main__': ...
- ajax之阴影效果实现(对象函数方法)
shadow.js文件内容jQuery.fn.shadow = function () { //获取到每个已封装的元素 //this表示jQuery对象 this.each(function () { ...
- Java SimpleDateFormat 中英文时间格式化转换
2015年08月29日 17:37:43 阅读数:32459 SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本).解析( ...
- 论文阅读笔记一:Tutorial on Gabor Filters
时域下的一维Gabor滤波器: 可以将Gabor滤波器看作是两个输出两个相位的滤波器,分别在实数域和虚数域上. 实数域上滤波器为: 虚数域上滤波器为: 傅里叶变换为频域: 上述两个滤波器对频率敏感,为 ...
- 异常:Keyword not supported: 'data source'的解决办法
将连接字符串中的"换为“'”,一个单引号即可. 详细解释:https://blogs.msdn.microsoft.com/rickandy/2008/12/09/explicit-c ...
- 微信小程序--代码构成---WXSS 样式
WXSS 样式 WXSS 具有 CSS 大部分的特性,小程序在 WXSS 也做了一些扩充和修改. 新增了尺寸单位.在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一 ...
- java 解析域名得到host
// 形如https://www.baidu.com 或 www.baidu.com, 判断这两种情况,并解析前者去掉http头,传入domain host // 方案1:正则表达式 + URI解析方 ...