很多站长朋友们都不太清楚php中的编码,今天小编就来给大家整理php中的编码,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 请教php编码问题 2、 php程序的编码方式 3、 php怎么设置编码 4、 PHP编码问题:数据库中的字符集编码。。。。。 请教php编码问题简单介绍:
首先你的网站出现乱码问题,是由于编码不统一引起的,在一个网站中有三处编码:数据库编码、php程序编码、网页显示编码。数据库编码:即mysql建数据库时的编码,大多数默认是utf8_general_ci;php程序编码:即连接数据库时设定的编码,mysql_query("set names 'utf8'");也可以是GBK等;网页显示编码:即浏览器显示的编码,可以在html网页中定义,<meta http-equiv="content-type" content="text/html;charset=utf-8" />,也可以在php页面的header(“content-type:text/html;charset=utf-8")函数定义。
原因:
1、数据库编码、php程序编码不一致。这种情况下,你插入到数据库中的就是乱码了,所以显示的是乱码,在数据库中看到的就是乱码。
2、数据库编码、网页编码不一致。这种情况下,你插入到数据库的数据是正常显示的,但从数据库读出并显示到浏览器就是乱码了,因为两者编码不一致,致使编码混乱所致。
3、php程序编码、网页显示编码不一致。这种情况下,你的源数据编码与显示的数据编码不一致,从而使显示乱码,这一点比较好理解,两者从开始就不一致,所以最后显示就不一致,呈现乱码。
解决方法:
避免乱码,要做到”三码合一“,即上述三处编码要统一,举个例子:如果你要用utf-8的编码,那么数据库编码就为:utf8_general_ci;php程序编码就为:mysql_query("set names 'utf8'");,网页显示编码就为:<meta http-equiv="content-type" content="text/html;charset=utf-8" />或者是php页面中的header(“content-type:text/html;charset=utf-8"),这就看你的前台页面是html还是php了。
如果这三码统一了,你打开网页还是乱码,就右键单击网页选中编码项,改为你网页的编码或者是自动检测,要不就在浏览器的工具菜单里改一下编码,刷新一下网页就ok。
php程序的编码方式在php代码的第一行添加如下代码就好了。
header("Content-Type: text/html; charset=UTF-8");
这行代码是告诉浏览器使用utf8显示。
或者在网页的head内添加
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
作用一样
根据你的描述 你的php文件应该不是utf8的,将php文件转成utf8就可以了。
php怎么设置编码header("Content-type: text/html; charset=utf-8");
另外你的编辑器编码也要对应哦
a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。
b. 如果欲使用utf-8编码,那么php要输出头 :header(“Content-Type: text/html; charset=utf-8"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的编码格式为utf-8。
最近需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。 让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数的一个bug。iconv在转换字符"—"到gb2312时会出错。解决方法很简单,就是在 需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后,如下:
iconv("UTF-8","GB2312//IGNORE",$data)
ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
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 语句,它表示列值使用了什么字符集)。
不知道这资料是不是你说的那些。呵呵~~~
关于php中的编码的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。