解决 PHP Mysql 和 UTF8的问题

http://sixpoint.me/443/solving-php-mysql-utf8-issue/

1. 数据库

  CREATE DATABASE db_name
   CHARACTER SET utf8
   DEFAULT CHARACTER SET utf8
   COLLATE utf8_general_ci
   DEFAULT COLLATE utf8_general_ci
;

如果数据库已经存在

  ALTER DATABASE sb_name
   CHARACTER SET utf8
   DEFAULT CHARACTER SET utf8
   COLLATE utf8_general_ci
   DEFAULT COLLATE utf8_general_ci
;

建表

 
  CREATE TABLE table_name(
  ...
  )
  DEFAULT CHARACTER SET utf8
  COLLATE utf8_general_ci
  ;

如果表已经存在

  ALTER TABLE tbl_name
   DEFAULT CHARACTER SET utf8
   COLLATE utf8_general_ci
;

2. 在 php.ini 里面启用

extension=php_mbstring.dll

同时进行如下配置

  mbstring.language = Neutral
  mbstring.internal_encoding = UTF-8
  mbstring.encoding_translation = On
  mbstring.http_input = auto
  mbstring.http_output = UTF-8
  mbstring.detect_order = auto
  mbstring.substitute_character = none
  default_charset = UTF-8

3. 在PHP中使用下面替代的function

mail()                => mb_send_mail()
strlen ()              => mb_strlen()  
strpos ()              => mb_strpos()
strrpos ()             => mb_strrpos()
substr ()              => mb_substr()
strtolower ()          => mb_strtolower()
strtoupper ()          => mb_strtoupper()
substr_count()        => mb_substr_count()
ereg ()                => mb_ereg()
eregi ()               => mb_eregi()
ereg_replace ()        => mb_ereg_replace()
eregi_replace ()       => mb_eregi_replace()  
split()               => mb_split()
htmlentities( $var )    => htmlentities( $var , ENT_QUOTES, 'UTF-8' )

4. 使用如下的 header 和 meta 标记

  header( 'Content-type: text/html; charset=UTF-8' );
  < meta http-equiv = "Content-type" value = "text/html; charset=UTF-8" />

5. 在向数据库 insert / update 前需要使用

  mysql_set_charset( "utf8" );或者mysqli_set_charset($link"utf8");(新版)

你可能感兴趣的:(解决 PHP Mysql 和 UTF8的问题)