解决 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");(新版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值