怎样解决PHP中文乱码问题
最近在CSDN刚开了这个博客,没什么时间把以前写的文章搬过来,只能有空慢慢来了。
--------------------------这篇文章仅献给那些一直在PHP乱码问题上困惑的人。
A.首先说下HTML中文乱码问题的解决方法。
比如有个index.html的页面(这里是指真正的静态页面,修改服务器的……伪静态的请看方案B)
1.在head标签里面加入这句
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
2.将文件的编码存为UTF-8.记事本或Editplus等编辑器都有保存时选择编码的功能。
B.HTML和PHP混合的页面解决方案。
除了A方案说的那些之外。还要在文件的最上面加上下面这句代码。
<?php
header("Content-type:text/html;charset=utf-8");
?>
注意header前面不要有任何的输出(echo/print/print_r/var_dump等PHP的输出语句,或者是你在“<?php”前面回车/空格)。否则会报错。
如果你用系统自带的Notepad保存为UTF-8编码的文件时会报错。
为什么呢?明明header已经写在最前面了。
不要着急,因为你看到的并不是真实的。实际上你的“<?php”标签前面已经存在了3个可恶的‘东东’,但普通编辑器看不到。如果你用UltraEdit打开并切换到16进制模式可以看到前面多了“EF BB BF”。这是跟Windows识别编码的方式有关。但我们的Apache却不认识这个,把它当成了输出。导致header出错。别怕,还是有解决的方法。
很简单,直接使用Editplus保存为UTF-8即可。因为Editplus的UTF-8是去除了BOM的。
C.纯PHP页面的中文乱码解决方案(数据是静态的)
只要在页面的开始加上
<?php
header("Content-type:text/html;charset=utf-8");
?>
然后保存为UTF-8编码的文件即可。注意和方案B一样。注意用那些去除BOM的编辑器保存。否则还是会报错。
D.PHP+Mysql中文乱码解决方案
除了按方案C那样的做法外,还要在你的数据查询/修改/增加之前加入数据库编码。
<?php
mysql_query('SET NAMES UTF8');
//接下来的就是查出数据或者修改,增加咯
?>
注意这里的UTF8和之前的不一样。中间没有横线。
通过以上应该就能解决PHP中文乱码的问题了。呼呼~~
*注:如果你对BOM有疑问或有兴趣可以到百度百科搜索。
相关文档:
Zend-PHP编码规范
1.对于只包含PHP的文件,"?>"是不允许存在的。注释:防止末尾被意外的注入空白并显示输出。
2.缩进应使用四个空格的缩进,而不使用制表符TAB。
3.一行80个字符是比较合适的,最多为120字符。
4.行的结束符只能是标准的UNIX文本文件的换行,换行符在文件中表示为10,或16进制的 0x0A。
不要使用win ......
1.是否可以在类的外部访问一个属性是由访问修饰符来确定的。
2.从类的外部直接访问类的属性是糟糕的想法。面向对象的一个方法就是鼓励封装。在PHP中,我们一般通过__get()与__set()函数来实现对
属性的访问.如果不直接访问一个类的属性而是编写访问函数,那么可以通过一段代码执行所有访问。最初的访问函数如下所示:
cla ......
Mysql自身学习
1.数据库常用的字段类型:
整数型: TINYINT(0-255字段), SMALLINT(大点), INT(更长), BIGINT;
小数型: FLOAT, BOUBLE, DECIMAL(M(整数),D(小数));
字符型: CHAR(固定), VARCHAR(弹性字符型,减缓容量);(最长字符为255)
日期型: DATETIME(日期时间), DATE(日期), TIMESTAMP(日期转化为数字.精度 ......
1.类和对象。
类是一类事物的描述。抽象,概念上的定义。
对象是实际存在的每个个体。也叫实例。对象是new出来的。$p = new Person();
2.属性
用来描述类中的数据元素。(也叫数据/状态)
修饰符(PHP5中必须修饰):public(公开,类的内外部读取修改),private(私有只在当前类中读取修改),protected(保护,能在这个类和 ......
返回一个结果全世界都知道怎么处理,关键是返回多个结果集就不好办了,下面有一解决办法
存储过程代码
DELIMITER $$;
DROP PROCEDURE IF EXISTS `test`.`sp_test`$$
CREATE PROCEDURE `test`.`sp_test` ()
BEGIN
select * from `user`.`user` limit 0, 50;
select coun ......