当前位置:编程学习 > php >>

PHP编码问题:数据库中的字符集编码。。。。。

PHP编码问题

答案:
      流行的关系数据库系统都支持数据库字符集编码,也就是说在创建数据库时可以指定它自己的字符集设置,数据库的数据以指定的编码形式存储。当应用程序访问数据时,在入口和出口处都会有字符集编码的转换。对于中文数据,数据库字符编码的设置应当保证数据的完整性。GB2312、GBK、UTF-8 等都是可选的数据库字符集编码;当然我们也可以选择 ISO8859-1 (8-bit),只是我们得在应 

  用程序写数据之前先将 16Bit 的一个汉字或 Unicode 拆分成两个 8-bit 的字符,读数据之后也需要将两个字节合并起来,同时还要判别其中的 SBCS 字符,因此我们并不推荐采用 ISO8859-1 作为数据库字符集编码。这样不但没有充分利用数据库自身的字符集编码支持,而且同时也增加了编程的复杂度。编程时,可以先用数据库管理系统提供的管理功能检查其中的中文数据是否正确。

  PHP 程序在查询数据库之前,首先执行 mysql_query("SET NAMES xxxx"); 其中 xxxx 是你网页的编码(charset=xxxx),如果网页中 charset=utf8,则 xxxx=utf8,如果网页中 charset=gb2312,则xxxx=gb2312,几乎所有 WEB 程序,都有一段连接数据库的公共代码,放在一个文件里,在这文件里,加入 mysql_query("SET NAMES xxxx") 就可以了。

  SET NAMES 显示客户端发送的 SQL 语句中使用什么字符集。因此,SET NAMES 'utf-8' 语句告诉服务器“将来从这个客户端传来的信息采用字符集 utf-8”。它还为服务器发送回客户端的结果指定了字符集(例如,如果你使用一个 SELECT 语句,它表示列值使用了什么字符集)。

不知道这资料是不是你说的那些。呵呵~~~
你用的什么数据库
mysql有些乱码是正常的   可能和你系统的编码不一致     
我总结的解决php+mysql乱码的方法:
1.打开mysql/my.ini文件夹找到default-character-set=Latin1 更改为default-character-set=gb2312;
2.在创建表的时候最后面记得加这句话:default charset=gb2312 如下所示:
create table <表名>(.....)default charset=gb2312;
3.在调用数据库的时候,加一句话,如下所示:
$link=mysql_connect('localhost','root','');
mysql_select_db('stud',$link);
mysql_query("set names 'gb2312' ");----加这句话!
这样,有2,3两步实现了编码及存储入表的匹配。
3.出现中文无法显示的原因有一个就是存储的编码跟连接数据库时的编码不一致导致的,特征表现为中文显示为?

上一个:php的有些变量是内置大写吗?
下一个:php怎么循环数据库里的内容啊

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,