php数据库解码 php源码解析

PHP显示MySQL数据乱码,字符集设置都是UTF8,数据库也是UTF8,一直找不到问题在哪里,代码见详细,求大神

php+mysql的utf-8中文乱码问题的解决方法

成都创新互联主营中站网站建设的网络公司,主营网站建设方案,App定制开发,中站h5成都小程序开发搭建,中站网站营销推广欢迎中站等地区企业咨询

问题汇总:

1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.

2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.

5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.

6.PHP页面字符集不正确.

7.PHP连接MYSQL数据库语句指定的编码不正确.

使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了.

针对不同问题的解决方法:

1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.

修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:

Alter DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是将test数据库的编码设为utf8.

2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

修改表的编码:

Alter TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是将一个表category的编码改为utf8.

3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.

修改字段的编码:

Alter TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

以上命令就是将test表中 dd的字段编码改为utf8.

4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.

如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.

5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.

这种情况也是修改页面charset即可.

6.PHP页面字符集不正确.

为了避免PHP页面乱码的发生,PHP页面开始第一句

header("content-type:text/html; charset=utf-8");

//强行指定页面的编码,以避免乱码

7.PHP连接MYSQL数据库语句指定的编码不正确.

在连接数据库的语句中.

mysql_connect('localhost','user','password');

mysql_select_db('my_db');

mysql_query("set names 'utf8'"); //select 数据库之后加多这一句

php 从数据库中读出 乱码

从你的截图来看应该数据库读取的数据没有问题,问题有可能出在你的前台显示上面,在页面输入的时候是不是对应的字段取得有问题。或许你去的东西根本就没有存在于读出的数组中。

php连MySQL数据库编码问题

也许是数据库的问题,我也遇到过,我用的是wampserver,界面的工具,直接点鼠标就可能建成mysql数据库,建成后导入数据,查询数据库返回面而的是乱码,我遇到的情况是这样的:

1、建库用gbk,如图。

2、导入表及数据时,默认是utf,此处要改成gbk就不是乱码了,如第图底页面,如果是默认的或是其它的字符集,能导入成功但是乱码。另外直接把sql粘贴到sql窗口,也不是乱码。

希望能帮到你,呵呵~

PHP读取Access数据库 出乱码

access的中文版默认是GBK格式的,是无法改变字符类型的,所以用php读取的时候会乱码。

解决方法是:使用iconv转换

一、使用 iconv函数制作一个转码的自定义从GBK转到UTF-8的函数,如以下代码:

function enc($c){return iconv('gbk','utf-8',$c);}

二、为了写入数据库的编码是符合数据库需要的,所以我们还要制作一个从UTF-8转向GBK的函数:

function dec($c){return iconv('utf-8','gb2312',$c);}

制作好了转码函数,接下就是正常使用了。在从数据库里面调数据显示在页面的时候使用enc()函数,从页面提交数据到数据库时使用dec()函数,这样就可以很好的解决PHP使用UTF-8编码,ACCESS使用系统默认编码的问题了。

PHP mysql 如何将从数据中读入的中文乱码转换成中文字符?

要解决乱码首先需要知道出现乱码的原因:

一、PHP+MySQL出现中文乱码的原因。

1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码。

2. 使用MYSQL中创建表、或者选择字段时设置的类型不是utf8,而网页编码不是utf8,也可能造成MYSQL中文乱码.

3. PHP页面的字符集与数据库的编码不一致。

4. PHP连接MYSQL数据库,操作是设定的语句指定的编码和页面编码,PHP页面编码不一致。

5. 用户提交的HTML页面编码,和显示数据的页面编码不一致 ,就肯定会造成PHP页面乱码.

二、解决中文乱码:

1. 网页编码设置。一般在HTML代码中的文件头html中加入属性:

meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″

保证,网页是"utf-8"编码。

2. PHP代码设置。在php代码的开始部分加入以下代码:

header(”Content-type: text/html;charset=utf-8″);

且要求保存的文件编码方式是utf-8,这样就保证了该文件也是utf-8编码。

3. 数据库中表的字段中存储中文的部分,要设置为utf8_general_ci类型。

4.PHP在连接数据库操作时,要设置操作的字段类型为utf8,设置方法如下:

mysql_connect(’localhost’,'user’,'password’);mysql_select_db(’db’);mysql_query(”set names utf8;”); //**设置字符集***

PHP中MYSQL数据库乱码问题,跪求解决方案

可能需要修改数据库的配置

一般情况下我们在设计数据库的时候都会事先确定好要用的字符集,但当我们要使用以前的数据的时候,可能会遇到字符集不同的问题,字符集的修改不能通过alert database charest set *来直接修改,这样只是影响以后的数据,对已有的数据没有用,那怎么办那

我们模拟讲latin1字符集的数据库修改成GBK的字符集,

1,导出表结构:

mysqldump -uroot -p --default -character-set = gbk -d databasenamecreatetab.sql

-default-character-set=gbk 表示设置上面字符集连接 -d表示只导出表结构

2,手工修改createtab.sql中表结构定义中的字符集为新的字符集。

3,确保记录不在更新,导出所有记录

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-chareacter-set=latina

databasenamedate.sql

--quick 该选项用于转存储大的表,--extended-insert 可以使转存文件更小,重载的时候加快速度,

--no-create-info不写重新创建每个转存储表的create table 语句,--default-character-set=latin1按照原有的字符集导出所有数据,这样导出的文件中,所有的中文都是可见的,保证不会出项乱码,

4,打开data.sql 将set names lation1修改为set names gbk;

5,使用新的字符集创建数据库,

create database databasename default charset gbk;

6,创建表,执行createtab.sql

mysql -uroot -p databasename createtab.sql

7,导入数据,执行data.sql,

mysql -uroot -p databasename data.sql

参考上面的方法试验下!~


当前文章:php数据库解码 php源码解析
文章地址:http://ybzwz.com/article/hipddg.html