- PHP文件本身必须是UTF-8编码。不像Java会生成class文件,避免这个问题。
- PHP要输出头:header(“Content-Type: text/html; charset=UTF-8”)
- meta标签无所谓,有header所有浏览器就会按header来解析。(Leakon观点:我认为很有必要正确设置meta信息,搜索引擎会关心这个设置的)
- 所有外围都得用UTF-8,包括数据库、JavaScript、CSS。
- PHP本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码(基本上linux都装了,没装的话download、tar、make、make install,很简单的)
- my.cnf:
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-storage-engine=MyISAM
在[mysqld]下加入:
default-collation=utf8_bin
init_connect=’SET NAMES utf8′
(Leakon观点:默认存储引擎用MyISAM不一定很好,做数据存储我认为应该用InnoDB,根据数据,建MyISAM表用于查询操作,这种方案比较合适) - 在需要做数据库操作的php程序前面加上
mb_internal_encoding(‘utf-8’); - create table最后边加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
(Leakon观点:我会选择COLLATE=utf8_general_ci,在对中文字段排序时,utf8_bin和utf8_general_ci结果是不一样的) - phpMyAdmin/config.inc.php
$cfg[‘DefaultCharset’] = ‘utf-8’;
$cfg[‘RecodingEngine’] = ‘iconv’; - phpAdmin导出数据时
把”二进制区域使用十六进制显示”的勾去掉
(Leakon观点:9、10两步似乎是针对旧版的phpMyAdmin,我用的是2.10.3,可以选择各种连接编码,不必每次改源文件)
以上是我从其他网站找到的PHP编码问题解决方案,有些帮助,并加上了自己的建议,请您指正。
遵守创作共用协议,转载请链接形式注明出处:
http://bianbian.org/technology/142.html