确认下浏览器的编码是否是gbk
或者
设置 页面 header("Content-type:text/html;charsert=gbk");

解决方案 »

  1.   

    我用show variables like 'character\_set\_%';   查看了下我的编码  那几个utf-8是原因吗
      

  2.   

    浏览器 页面默认的是GBK编码吗 如果项目没要求个人还是觉得UTF-8编码比较好 统一成UTF-8编码
      

  3.   

    这种乱码样式是GBK与UTF-8冲突,修改一下就ok了,iconv你传过来的变量也行。url转码也行,修改文件编码也行。个人建议楼主研究一下大概的乱码问题,很多HTTP监视工具或者浏览器地址栏等在显示Url的时候会自动将Url进行一次解码(使用UTF-8字符集),这就是为什么地址栏显示的Url包含中文的缘故。但实际上发送给服务端的原始Url还是经过编码的
      

  4.   


    这与数据库的字符集无关
    显然你的查询页面使用了 ajax 提交
    你可能需要对传入传出的数据做转码处理,但不是必须的一般的说,数据库和表的字符集都是无关紧要的,只要字段的字符集是宽字符的就可以了
    何况如果:
    数据库服务是租用的,你不可能去修改数据库系统的默认字符集
    数据库是共享的(多人多个项目共用)你也不可能修改默认字符集去影响他人的工作你实际要做的工作是:根据应用场合变换工作字符集(set names 指令)
    对于 HTML 页面:
    gbk 页面是 set names gbk
    utf-8 页面是 set names utf8
    对于 AJAX 应用是 set names utf8AJAX 应用一般使用现成的 js 框架,比如 jquery
    他们总是以 utf-8 编码发送数据(通过 encodeURIComponent 函数)
    自己书写时,也要用 encodeURIComponent 编码发送的数据
    由于 AJAX 服务端总是接收到 utf-8 编码的数据,所以以 gbk 为基准的网站可能需要做如下处理:
    1、用 php 代码对传入的数据进行分析处理时,需做 utf-8 到 gbk 的转换
    2、传入数据直接应用于查询时,先执行 set names utf8 指令
    3、由 php 代码产生的 gbk 数据,可以转码成 utf-8 后输出
      也可以在输出前先发送语言声明的头 header('Content-type: text/html;charset=GBK') 而不转码总之:
    mysql 可以自动将保存的数据的字符集转换成你需要的字符集
    浏览器的工作字符集是 unicode 能自动转换明确声明的任何字符集的内容到 unicode
      

  5.   


    我现在apache和my.ini包括php.ini 的默认字符都是GBK。我现在把整个文件的保存格式保存为GB2312 页面声明也是GB2312. 我尝试着修改我操作快速搜索的ajax文件。现在不乱码,但是直接没有任何输出的文字了。<?php
    header('Content-type: text/html;charset=gb2312');
    $username = $_POST['username'];
    $cv = iconv('gb2312','utf-8',$user_name);
    include('config.php');
        include('db.php');
        $db    = new db();
        $db->connect($db_config);
    $sql = 'select id,true_name from users where user_type = 1 and true_name like "%'.$cv.'%"';
    echo $sql;exit();
    $rs = mysql_query($sql);
    $html = '<select name="user_id" style="width:100px;padding:5px;">';
    $html .= '<option value="0">请选择客户</option>'; 
    while (@$row=mysql_fetch_array($rs)) {
    $html .= "<option value=".$row['id'].">".$row['true_name']."</option>";
    }
    $html .= '</select>';
    echo $html;
    ?>
      

  6.   

    AJAX 传入的是 utf-8 的,所以要
        $username = $_POST['username'];
        $cv = iconv('utf-8', 'gbk', $user_name);浏览器不区分 gbk 和 gb2312
    但 php 和 mysql 中 gbk 和 gb2312 是不同的,后者只是前者的子集
      

  7.   

    ajax 发送请求的时候使用js函数 encodeURIComponent()
    php 接受变量时候使用 urldecode()
    最后iconv("UTF-8", "gb2312", $content)