PHP & MySQL & Apache统一编码

在用PHP与MySQL中的数据库交互的时候,老是碰到乱码问题。要么是从数据库读出的数据乱码,要么是无法存入数据库,神烦。

最初的默认编码格式是latin1的,当时就是读出的时候变乱码了( ╯□╰ ),之后把它修改为gbk的,存入的时候还是有问题。百度之,遂决定统一编码~

这里以统一utf8编码为例:

环境:MySQL5.5,Apache2.4,PHP5.6,操作系统Windows

MySQL统一编码

这两句是查看MySQL当前编码格式的语句:SHOW VARIABLES LIKE 'character_set_%';

SHOW VARIABLES LIKE 'collation_%';

外部访问数据乱码的问题就出在这个connection连接层上,解决方法是在发送查询前执行一下下面这句:SET NAMES 'utf8';

找到MySQL的my.ini文件,打开并修改:[mysql]

default-character-set=utf8

[mysqld]

character-set-server=utf8

此时,查询编码格式后已经全部是utf-8格式的编码了。当然,在[client] 段加default-character-set=utf8 也ok。查询结果如下:mysql> SHOW VARIABLES LIKE 'character_set_%';

+--------------------------+---------------------------------------------------------+

| Variable_name            | Value                                                   |

+--------------------------+---------------------------------------------------------+

| character_set_client     | utf8                                                    |

| character_set_connection | utf8                                                    |

| character_set_database   | utf8                                                    |

| character_set_filesystem | binary                                                  |

| character_set_results    | utf8                                                    |

| character_set_server     | utf8                                                    |

| character_set_system     | utf8                                                    |

| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\ |

+--------------------------+---------------------------------------------------------+

8 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation_%';

+----------------------+-----------------+

| Variable_name        | Value           |

+----------------------+-----------------+

| collation_connection | utf8_general_ci |

| collation_database   | utf8_general_ci |

| collation_server     | utf8_general_ci |

+----------------------+-----------------+

3 rows in set (0.00 sec)

这样不用每次查询sql前必须加一个set names utf8;了。

PHP统一编码

在php.ini中找到并修改:default_charset = "UTF-8"

Apache统一编码

根据网上建议,在Apache的配置文件httpd.conf中,找到包含“AddLanguage”或“AddCharset”的行,在这些行最前面增加一行:AddDefaultCharset utf-8

当然,我没有在Apache2.4中找到“AddLanguage”或“AddCharset”,就直接在httpd.conf文件末尾添加了。

这里再提一些找来的小建议:养成良好的习惯,在每个网页的里加入这行:

把Apache中的AddDefaultCharset utf-8修改为AddDefaultCharset off,也就是关闭默认使用的字符集,这样Apache就能根据网页中的meta信息来选择使用字符集。

PHP输出头:header(“Content-Type: text/html; charset=utf-8"),所有文件的编码格式为utf-8。

最好使用utf8 without BOM格式,至于其与utf8+BOM的区别,可以自己去搜一下~

注意:

即便统一编码之后,还是需要注意一下的,就是你的CMD是GBK的,所以从那执行sql语句时,比如说建表时,需要告诉MySQL服务器,你的客户端CMD->MYSQL CLIENT使用的是GBK码。set names gbk;

否则它一直以为你的客户端码也是UTF8码,直接将你的GBK码不转换存入数据库,就会出现错误。

SET NAMES XXX 起的功能就是告诉服务器,我的客户端是什么码。

水平有限,只写到这里了,请大家务必踊跃找我麻烦~

mysql表统一编码_PHP MySQL Apache统一编码相关推荐

  1. 如何设置mysql表中文乱码_php mysql表中文乱码问题如何解决

    为避免mysql中出现中文乱码,建议在创建数据库时指定编码格式: 复制代码 代码示例: create database zzjz CHARACTER SET gbk COLLATE gbk_chine ...

  2. php和mysql实现模糊查询_PHP MYSQL实现登陆和模糊查询两大功能_PHP

    本文使用的软件版本如下:PHP版本 5.5.12:MYSQL版本 5.6.17:Apache 2.4.9 用的wampserver 一.PHPMYSQL实现登陆 一共含有两个文件:login.php和 ...

  3. mysql 表列表_一个MySQL表中的多列表显示

    从MySQL表中显示多列时遇到问题 这很简单 - 我有28条记录,我想做7行4行 - 每条记录只有两列 - id#和name(表中的"句柄"). 我的问题是,当我使用 > $ ...

  4. 怎样用mysql做留言板_PHP+Mysql 实现留言板

    最近看了下PHP基础语法,就想利用这些基本东西实现留言板,也是对基础知识的一个巩固. 什么是留言板?一种可以用来记录,展示文字信息的载体. 现切入正题,说说本次留言板是怎么实现! 首先用户提交留言后, ...

  5. php mysql实现下拉列表查询_php mysql如何实现通过下拉框查询显示数据库中的数据...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. php mysql blob存储图片_php mysql blob存储图片

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. mysql 表单属性_php表单常用属性有什么?

    程序开发中,必不可少的会使用到form表单,以前只是在前端开发时简单使用,对它的属性不甚了解,最近在后端学习中,不断接触到它的属性,现记录一二.下面本篇文章给大家介绍php表单常用的5个属性. act ...

  8. php mysql的人事管理系统_PHP MYSQL Apache 基于php的人事管理系统 - 下载 - 搜珍网

    人事管理系统.doc rsgl/log.html rsgl/main.php rsgl/tlog.php rsgl/xtgl/beifen.php rsgl/xtgl/data_stock_chk.p ...

  9. mysql php 乱码问题_php mysql 中文乱码问题的解决办法

    php mysql中文乱码的解决办法:1.网页文件head设置编码:2.将PHP页面在保存的时候使用utf-8编码保存:3.在MYSQL中新建数据库的时候数据库选择UTF-8编码. 常见php与mys ...

最新文章

  1. System.Timers.Timer与System.Threading.Timer
  2. Nature年度十大杰出论文公布:机器狗算法、近室温超导等入选,复旦中科院上榜...
  3. ETSI MEC — 与 NFV 的融合
  4. 网口扫盲二:Mac与Phy组成原理的简单分析
  5. 自定义UISlider的样式和滑块
  6. HTML5无人机产品官网专题模板
  7. python打印不同颜色的字_Python 根据日志级别打印不同颜色的日志的方法示例
  8. 被问到一个简单的脚本后
  9. 安装Office SharePoint Server 2010实战
  10. lcd显示c语言程序,1602液晶简单显示程序
  11. 第3章-数理知识基础 -> 代数图论
  12. 【Excel-2010】人口金字塔图
  13. ABAP 学习笔记一
  14. rsync - 客户端常用参数
  15. C51单片机实现呼吸灯
  16. 计算机网红哥,IT男网红哥怒砸电脑最新消息 或将被提供直播间(图)
  17. 一路向西17天之 乌市-布尔津-空中花园-禾木
  18. 微信小程序请求封装token
  19. 在Ubuntu上安装LibRaw
  20. Say Hello to everybody !

热门文章

  1. C#LeetCode刷题之#374-猜数字大小(Guess Number Higher or Lower)
  2. 使用peewee增删查改数据库
  3. centos root密码_如何在CentOS中恢复丢失的root密码
  4. 插图 引用 同一行两个插图_数学身份的优雅LED插图
  5. 免费的React课程,通过构建聊天应用程序来提高您的React JS技能
  6. aws docker_如何使用Docker的功能来摆脱AWS Lambda函数的困境
  7. Fiddler设置抓一个域名下个包
  8. Gradle配置国内源
  9. Java-顺序表和链表
  10. Python | 常见的反爬及解决方法,值得收藏