mysql php 汉字问号 php html 乱码

php从mysql取数据输出时会出现问号的情况。

PHP通过设置character_set_client,告诉Mysql,PHP存进数据库的是什么编码方式。

PHP通过设置character_set_results,告诉Mysql,PHP需要取什么样编码的数据。
PHP通过设置character_set_connection,告诉Mysql,PHP查询中的文本,使用什么编码。

MYSQL使用设置的编码方式存储文本。

mysql_select_db("travel", $con);//选择数据库
mysql_query ( "set character_set_client =utf-8" );
mysql_query ( "set character_set_results =gbk" ); //实践表明有这一行,php文件就可以显示汉字了,我的mysql字符集是gbk,可能别的有 gb2312等等
mysql_query ( "set character_set_connection =utf-8" );

以上三行mysql_query可以用mysql_query("set names gbk");代替。

具体关于字符集的事情请参考http://blog.csdn.net/martinkro/article/details/5352474

php可以显示汉字之后,在html里用echo会出现乱码,是因为html的字符集是utf-8

<?php 
 header("Content-Type:text/html;charset=gbk"); //输出前加上这行防止出现乱码。
echo $row ['title'];
?>

来说说这个 header("Content-Type:text/html;charset=gbk"); 详情参看http://www.jb51.net/article/22501.htm

一般html上面都有<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,utf-8是为了符合国际化的标准………………总的来说header() 比<meta>优先级高,html会以header()为准。

至此原来utf-8标准下html中标签内的汉字将会变成乱码……继续研究中

我发现了一个叫做iconv的字符集转换函数,

iconv('gbk', 'utf-8', $str);

这是把gbk转换成utf-8,注意啊一定是utf-8,html是不认识utf8的………………

至此

<?php 
 header("Content-Type:text/html;charset=gbk"); //输出前加上这行防止出现乱码。
echo $row ['title'];
?>这段不在需要header()函数,变为如下:

<?php  
$string = $row ['title'];
echo iconv("gbk","utf-8",$string);
?>

html上边还是<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,也就是说html的字符集还是utf-8。

终于可以了………………


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值