PHP中文乱码的三个原因及解决方法
我们在做PHP项目的时候,经常会遇到中文乱码的问题,有时候编码问题还导致MYSQL的报错。中文乱码总共有三个原因
1:APACHE服务器设置导致乱码
2:PHP,或者HTML页面编码导致中文乱码
3:MYSQL数据库的表以及字段编码导致中文乱码
我们分别从这三个部分来探究PHP程序设计中的编码问题
在这之前我们要了解一些基本理论:
1、文件编码
每个文件在保存的时候都可以选择以什么编码保存,例如用WINDOWS的记事本创建一个文件可以选择ANSI 以及UTF8等等编码。我们选择了什么编码该文件就以这种编码方式保存在硬盘上。 读取该文件数据的时候也会指定一种编码来打开,如果指定的编码与文件保存的时候的编码不一样的话就会出现乱码
2、HTML的编码
在网页头部一般有这样一个<HEAD>区域
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
这个的意思是让客户端知道,接下来输出的是html代码(text/html),并且以下输出的内容都将是utf-8编码的。如果我们用记事本创建一个HTML文件 该文件包含
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
但是在保存的时候却以ANSI编码格式保存,那么我们用浏览器打开这个文件时,浏览器看见META 行的UTF8编码设置后 就将文件以UTF8格式输出,而文件本来是ANSI编码,这样便出现了中文乱码。
一:APACHE服务器编码
在APACHE配置文件中有一行是编码的设置 默认的是AddDefaultCharset ISO-8859-1,大部分人认为应该将这句改为 AddDefaultCharset UTF-8 。而蜗牛认为这是误人子弟。 这项配置是告诉APACHE服务器选用什么样的编码来输出WEB页面(这样做会忽略,HTML页面中的页面编码的设置 EG:<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />),如果我们建立一个GB2312的页面就会出现中文乱码 。所以最好的方法是将AddDefaultCharset ISO-8859-1这一项注释掉 #AddDefaultCharset
二:PHP编码问题
php最终生成的是文本文件,而他要从数据库中取出文本数据,还要把文本数据写到数据库中。由于MYSQL并不知道PHP发送给他的是什么编码的数据,所以需要客户端PHP告诉他存取的是什么编码的数据。
相关文档:
<?php
$s = <<<html
<html>
<head>
<title>nested tag test</title>
<mce:script type="text/javascript"><!--
alert('fdsafdasfasd');
// --></mce:script>
</head>
<body>
<div id=0>
<div id=1><img name="im ......
header("Content-Type:text/html;charset=utf8"); 放到PHP开头处
$link=mysql_connect("localhost","root","110110");//链接
mysql_select_db("blog",$link);//选择数据库
mysql_query("SET character_set_results=gbk", $link);//字符编码 ......
从php5.10开始,php中加入了时区的设置,在php中显示的时间都是格林威治标准时间,这就造成了我们中国的用户会差八个小时的问题!
相关设置是修改php.ini中的 date.timezone 参数:
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
默认是关闭的,只需把注释去掉,改为即可
[Dat ......
本教程来讲一下关于在php编程中常用到的循环语句do while与while的区别吧,while 是当条件为真是才执行而do while至少会执行一下,下面我们就来看看
do {
}while(条件)
看do while的实例吧。
<?
$a =10;
do {
echo $a;
}while ($a>11)
这里会输出10;然后循环终止,那么我们来看看while的实例吧。
$a=10;
w ......
extract() //将数组中的键名作为变量名,键值作为变量值
例:
form.html
<form action="action.php" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit&quo ......