<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

通过iconv函数实现编码转换

iconv ( string in_charset, string out_charset, string str )

phpexplode中文乱码PHP 字符集与乱码 Bootstrap

如:iconv("GB2312","UTF-8",$text);

把稳:如果网页编码与参数out_charset相同,就没必要用iconv()函数,否则就会涌现不可预知的缺点(如中文汉字转不出来)

如:imagettftext()函数只支持utf-8字符集

header("content-type:text/html; charset=utf-8");

连接数据库:mysql_query("SET NAMES UTF8")

<?php

$conn=mysql_connect("localhost","root","111") or dir("做事器连接失落败".mysql_error()); //连接数据库做事器

mysql_select_db("db_database20",$conn) or die("数据库连接失落败".mysql_error()); //连接db_database18

mysql_query("set names utf8"); //设置数据库编码格式

?>

避免截取中笔墨符串时涌现乱码

string mb_substr ( string str, int start [, int length [, string encoding]] )

设置数据库默认字符集和校正办法:

CREATE TABLE [IF NOT EXISTS] 表名称 type=myisam default character set gbk collate gbk_chinese_ci;

CREATE TABLE [IF NOT EXISTS] 表名称 type=myisam default character set utf8 collate utf8_general_ci;

处理中笔墨符

对付以上的字符串函数,有些可以用于中文,但有些却不适用中文。

以是, PHP 供应了专门的函数来办理这样的问题。

中笔墨符集可以是 gbk,utf8,gb2312

mb_strlen () 对应的函数为 strlen() 求字符串的长度

mb_strstr() 对应的函数为 strstr() 求某字符串到结尾的字符

mb_strpos() 对应的函数为 strpos() 求出字符最先涌现处

mb_substr() 对应的函数为 substr() 取出指定的字符串

mb_substr_count() 对应函数为 substr_str() 返回字符串涌现的次数

iconv_strlen() 对应的函数为 strlen() 求字符串的长度

iconv_strpos() 对应的函数为 strpos() 求出字符最先涌现处

iconv_substr() 对应的函数为 substr() 求某字符串到结尾的字符

iconv_strrpos()对付的函数为 substr() 查找字符串在一个字符串中末了涌现的位置

详细可参考手册 国际化与字符编码支持|多字节字符串

国际化与字符编码支持|iconv

实例:

<?php

setlocale(LC_ALL, 'en_US'); //设置为美式英语

echo strftime("%A %e %B %Y", time()); //输出当前韶光

echo "<br>";

setlocale(LC_ALL, 'chs'); //设置为中文

$dates=strftime("%A %e %B %Y", time()); //输出当前韶光

echo iconv("gb2312","utf-8",$dates); //输出经由编码格式转换后的中文韶光

?>

把稳:

内容编码(页面声明的字符集)与文件编码(文件本身的字符集)哀求同等,否则会涌现乱码;

记事本的默认字符集为:ANSI,为了避免不必要的缺点,只管即便避免用记事本新建文件;

window记事本编辑器如果保存为utf-8文件就会帮你加上BOM头;在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,

现在已经有很多软件识别BOM头,但是还有些软件不能识别BOM头,比如PHP就不能识别BOM头,这也是用记事本编辑utf-8编码后实行就会出错的缘故原由了。

如要打消文件BOM头

请见 PHP|实例|文件|自动去除文件BOM代码

推举文本编辑器:NotePad++

phpDesigner8软件中 如果有php文件中有Bom头,则有"文件|文件编码|以BOM保存"选项,将其选项去掉,则去掉了BOM头信息

下面以utf-8为例,解释如何统一编码.

1.将网页文件的编码保存为utf-8无BOM

记事本,保存文件的时候选择"编码"为utf-8

editPlus,保存时选择"encoding"为utf-8

Notepadd++,按ctrl+A全选当前文档,选择菜单栏的Encoding-->Convert to UTF-8 without BOM

UEStudio,保存时选择"格式"为utf-8无BOM其他软件请根据情形操作

2.在PHP页面的<?php ?>标签对之间利用 header('Content-type : text/html; Charset=UTF-8'); 声明页面编码为utf-8

在html头部(<head>和</head>之间)写入<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />来声明页面编码为utf-8

3.PHP页面中连接数据库做事器后实行sql查询前利用以下代码先将字符集设置为utf-8

以下方案任选一种,个中 $myqli 和 $pdo 是创建的mysqli和pdo类的工具实例

mysql_query('SET NAMES utf8'); // mysql 扩展

mysqli_query('SET NAMES utf8'); // mysqli 扩展

$mysqli->query('SET NAMES utf8'); // mysqli 扩展

$pdo->exec('SET NAMES utf8'); // PDO 扩展

4.创建数据表的时候将默认编码设置为utf8,将字符校正(callate)设置为utf8_general_ci,把稳MySQL里面是utf8而不是utf-8

IF NOT EXISTS `name`(

....代码....

)ENGINE InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

做到这四点,相信你的网页和数据库不会再乱码.