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