<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
通过iconv函数实现编码转换
iconv ( string in_charset, string out_charset, string str )
如: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;
做到这四点,相信你的网页和数据库不会再乱码.