MYSQL数据库,从其中查出来的数据用echo输出到网页上是乱码,而且奇怪的是只有局部一个地方是乱码,其它地方却显示正常。$sql="select username from pw_members where uid=?";
$result=$handler->exeSql($sql,array($winduid),"select");
if($result){
echo '<div id="user_name">'.$result["username"].'</div>' }else{
echo '<div id="user_name">未知用户名</div>';
}这是代码,然后网页开头是<meta http-equiv="Content-Type" content="text/html"; charset="gbk" />数据库信息是:
Server characterset:utf8
Db characterset:utf8
Client characterset:utf8
Conn. characterset:utf8
字段信息:
Field:username
Type:varchar(18)并不是全部文字都是乱码,只有这个地方是乱码,求解释~~

解决方案 »

  1.   

    未知用户名 我相信你可以看到这个不是乱码
    你的数据库用utf-8存储,但前端显示的HTML却使用GBK编码,自然会有一部分总要乱码。
    你可以将 $result["username"] 转码为GBK. 
    $result["username"] = iconv('UTF-8', 'GBK', $result["username"]);
    或者将你的.php或.html文件保存为utf-8
      

  2.   


    我现在改成了这样:
    if($result){
    $result["username"]=iconv('UTF-8','GBK',$result["username"]);
    echo '<div id="user_name">'.$result["username"].'</div>';
    else{}未知用户名确实如你所说,可以显示,但是我按你这方法调试了以后,还是不行~是不是我浏览器设置了什么编码?
      

  3.   

    数据库编码都是UTF-8 你就将页面编码 文件编码都设置成UTF-8就省事了,何必还要转来转去?
    另外在取数据库数据前指定数据编码SET NAMES('UTF8');//gbk
      

  4.   


    好久不见,妞妞。
    如果给其它人访问的话,那他们是不是也要这么设置才行呢?
    取数据前指定编码了是不是就不用iconv了?
      

  5.   

    好...其他人访问的意思是?还有人在调用服务器数据库数据?页面编码 输出 读取数据库  数据库编码 都一致当然不需要iconv了...
      

  6.   


    我把浏览器(chrome)的编码设置成了“utf-8”,然后<head>中加入了这条代码
    <meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />然后取消了iconv转换,但是整个网页都变成乱码了。妞妞,这个编码的问题我不是很清楚啊,能不能解释下啊~刚才百度了四个编码都没查到什么资料啊。
      

  7.   

    本帖最后由 PhpNewnew 于 2012-08-12 23:02:17 编辑
      

  8.   


    我设置了SET NAMES ‘UTF-8'
    我用的是GVim,怎么保存成utf-8的形式?
    感觉好复杂啊。。
      

  9.   

    不复杂吧...编码一致Gvim不是很清楚好像没有这个选项。Linux下? 有桌面吗?装个bluefish开发工具好了...另存
    或者直接到win系统下...editplus notepad++...另存
      

  10.   

    我是在WINDOWS下用GVIM,然后现在只能用这个方法吗?
    妞妞,能不能解释一下这4个编码是什么过程里用到的啊?保存成utf-8形式是什么意思?还有别的形式吗?
      

  11.   

    一个是告诉数据库我现在要用什么编码来操作数据
    一个是告诉浏览器应该使用什么编码来显示
    一个是文件自身用的什么编码windows下用editplus 或者notepad++啊 很简单 反正就是另存为嘛...然后你就可以看到有编码选了
    还有ANSI也就是 GBK...还有什么无头的UTF-8 好像还有一些欧洲的编码,这个我忘记了。
      

  12.   


    谢谢妞妞~我已经解决这个问题了,问题是我的PHP文件编码不是utf-8的。
    还有最后一个问题想请教一下,就是我在数据库中查看了show variables like 'char%';,然后看到了client,connection和results三个字符集都是utf8的,但是为什么还是要在代码里加入query("SET NAMES utf8");才行呢?这个SET NAMES不就是改变这3个字符集的吗?