解决 PHP UTF-8 编码问题

  1. PHP文件本身必须是UTF-8编码。不像Java会生成class文件,避免这个问题。
  2. PHP要输出头:header(“Content-Type: text/html; charset=UTF-8”)
  3. meta标签无所谓,有header所有浏览器就会按header来解析。(Leakon观点:我认为很有必要正确设置meta信息,搜索引擎会关心这个设置的)
  4. 所有外围都得用UTF-8,包括数据库、JavaScript、CSS。
  5. PHP本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码(基本上linux都装了,没装的话download、tar、make、make install,很简单的)
  6. 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表用于查询操作,这种方案比较合适)
  7. 在需要做数据库操作的php程序前面加上
    mb_internal_encoding(‘utf-8’);
  8. create table最后边加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
    (Leakon观点:我会选择COLLATE=utf8_general_ci,在对中文字段排序时,utf8_bin和utf8_general_ci结果是不一样的)
  9. phpMyAdmin/config.inc.php
    $cfg[‘DefaultCharset’] = ‘utf-8’;
    $cfg[‘RecodingEngine’] = ‘iconv’;
  10. phpAdmin导出数据时
    把”二进制区域使用十六进制显示”的勾去掉
    (Leakon观点:9、10两步似乎是针对旧版的phpMyAdmin,我用的是2.10.3,可以选择各种连接编码,不必每次改源文件)

以上是我从其他网站找到的PHP编码问题解决方案,有些帮助,并加上了自己的建议,请您指正。

1 comment

Leave a Reply

Your email address will not be published.

*