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 编码问题的更多相关文章

  1. mysql编码的那点事

    Mysql编码问题  在php页面可以向mysql插入英文字符,但就是不能插入中文字符,在cmd客户端也可从插入,这是困扰我两天的问题. 在网上找了很多资料,最终确定了是字符编码这个地方出现了问题,首 ...

  2. Linux(Ubuntu)使用日记------Mysql编码(utf-8)的设置

    Mysq版本:5.7.21 操作系统:Linux(Ubuntu) 整个操作的基本思路如下(包括问题的解决思路,想要直接解决问题的可以先看最后的命令总结) 检查mysql编码 找到Mysql的配置文件 ...

  3. linux上设置mysql编码

    linux下设置mysql编码 linux下设置mysql编码 首先查找MySql的cnf文件的位置: [root@flyHome gaoxiang]# find / -iname '*.cnf' - ...

  4. MYSQL进阶学习笔记一:MySQL编码设定,会话变量和全局变量!(视频序号:进阶_1-3)

    知识点一:MySQL编码设定(1-2) 服务器编码设定: 查看MySQL服务器端的编码格式: SHOW VARIABLES LIKE ‘char%’; 设定编码格式: SET NAMES ‘utf8’ ...

  5. 关于mysql编码问题

    1 查看MySQL编码 SHOW VARIABLES LIKE 'char%';

  6. 配置mysql 编码

    配置mysql 编码 [client]default-character-set=utf8mb4 default-storage-engine=INNODB [mysql]default-charac ...

  7. mac mysql 编码配置

    mac mysql 编码配置 (mysql目录下没有my.cnf) 想要修改编码发现自己的/usr/local/mysql/support-files里面根本没有my.cnf 安装方式是去mysql官 ...

  8. 【他山之石】mysql编码问题总结

    有些问题可能比较基础,但是没有经过系统学习还是可能会出错,记录下. 这次是mysql的编码问题. 背景是部署新的测试环境,给了一台服务器还有在另一个环境下的mysql,配置过程中发现mysql编码有问 ...

  9. mysql编码设置

    一:mysql字符集 mysql的字符集支持(Character Set Support)有两个类型:字符集(Character set)和连接校对(Collation).对于字符集的支持细化到四个层 ...

随机推荐

  1. 使用 mod_rewrite 来修改 Confluence 6 的 URLs

    备注:这个页面的文档是 Apache 的配置,而不是 Confluence 自己的配置.Atlassian 将会对 Confluence 的配置提供支持,但是我们不能保证能够对你所有在配置 Apach ...

  2. Confluence 6 创建站点的导出文件

    希望为你的站点创建一个 XML 导出文件: 进入  > 基本配置(General Configuration) > 备份和恢复(Backup & Restore). 选择 归档到备 ...

  3. Confluence 6 启用和禁用 Office 连接器

    如果你希望限制访问 Office 连接器的所有组件或者部分组件,你可以禁用整个插件也可以禁用插件中的某个模块. 希望启用或禁用 Office 连接器模块: 进入  > 基本配置(General ...

  4. Confluence 6 为空白空间重置原始默认内容

    希望重置为原始的默认内容: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链接. 在左侧的面板中选择 全局模板和蓝图(Global Templates and ...

  5. Android 基础 十一 Android的消息机制

    Handler是Android消息机制的上层接口,这使得在开发应用过程中我们只需要和Handler交互即可.Handler的使用过程很简单,通过它可以轻松地将一个任务切换到Handler所在的线程中去 ...

  6. LeetCode(84): 柱状图中最大的矩形

    Hard! 题目描述: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度 ...

  7. 【ES】学习11-多桶排序

    聚合结果的排序 默认:桶会根据 doc_count 降序排列. 内置排序: 设置按doc_count升序排序:注意order,_count GET /cars/transactions/_search ...

  8. 4.8cf自训

    发现cf以前的好题真的很多.. cf 730j 01背包变形 感觉很好的题 /* 先处理出最少需要t个瓶子 dp[i][j][k]前i个取k个,容量为j时的水的体积 滚动数组搞一下 本题的状态转移必须 ...

  9. cf1110F 离线+树上操作+线段树区间更新

    自己搞的算法超时了..但是思路没什么问题:用线段树维护每个点到叶子节点的距离即可 /* 线段树维护区间最小值,每次向下访问,就把访问到的点对应的区间段减去边权 到另一颗子树访问时,向上回溯时加上减去的 ...

  10. Oracle logminer 日志挖掘

    Table of Contents 1. LOGMNR简介 2. 创建数据字典 2.1. 外部文件存储数据字典 2.2. redo log 存储数据字典 3. 添加需要分析的文件 4. 开始分析文件 ...