Home > php教程 > php手册 > 关于php读mysql数据库时出现乱码的解决方法,mysql乱码

关于php读mysql数据库时出现乱码的解决方法,mysql乱码

WBOY
Release: 2016-06-13 08:53:55
Original
1110 people have browsed it

关于php读mysql数据库时出现乱码的解决方法,mysql乱码

关于php读mysql数据库时出现乱码的解决方法

php读mysql时,有以下几个地方涉及到了字符集。
1.建立数据库表时指定数据库表的字符集。例如

  • create table tablename
  • (
  • id int not null auto_increment,
  • title varchar(20) not null,
  • primary key ('id')
  • )DEFAULT CHARSET =UTF8;
    复制代码
    2. mysql的字符集
    mysql中有三个重要的变量,character_set_client,character_set_results,character_set_connection。
    通过设置character_set_client,告诉Mysql,PHP存进数据库的是什么编码方式。
    通过设置character_set_results,告诉Mysql,PHP需要取什么样编码的数据。
    通过设置character_set_connection,告诉Mysql,PHP查询中的文本,使用什么编码。
    3. 连接数据库后,设置数据库间传输字符时所用的默认字符编码。
    使用mysqli::set_charset()或mysqli::query('set names utf8'),进行设置。
    尽量使用mysqli::set_charset(mysqli:set_charset)而不是”SET NAMES”
    • $db = new mysqli('localhost','user','passwd','database_name');
    • $db->set_charset('utf8');
      复制代码
      注意是utf8,不是utf-8
      (这里有个问题就是,数据库和php都已经统一了编码,但是如果没有调用mysqli::set_charset()函数时,读出数据时仍然会出现乱码。这是为什么?)
      (另,set names utf8相当于下面三句
      SET character_set_client = utf8;
      SET character_set_results = utf8; 
      SET character_set_connection = utf8; 

      4. html页面使用的字符集。在meta标签中设置

    • 复制代码
      5. php文本文件所使用的字符集。
      在linux下可以用vim打开文件,输入
      :set encoding
      查看文件使用的字符集
      要保证不乱码,需要保证文件自身的编码,HTML里指定的编码,PHP告诉Mysql的编码(包括character_set_client和character_set_results)统一。同时使用mysqli:set_charset()函数或”SET NAMES”。
      针对“3”后面的问题,写了几个例子,测试链接数据库后,设置和不设置字符集时的结果。测试环境Ubuntu 12.04,MySQL 5.5,php 5.5.7。
      结果如下:
      (1) 数据库表字符集是utf8,不使用set names utf8
      能正常插入、读出中文,但是在mysql中显示乱码
      (2) 数据库表字符集是utf8,使用set names utf8
      能正常插入、读出中文,mysql中显示正确
      (3) 数据库表字符集不是utf8,使用set names utf8
      mysql中显示,读出都是问号。

       php教程选自零零H5

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template