数据库编码GBK,页面是UTF8页面乱码,有解决的方案吗?谢谢

解决方案 »

  1.   

    页面修改编码如果含有汉字就太麻烦,直接修改数据库,将数据库导出.sql文件,然后打开查找并修改
    CHARACTER SET utf8
    然后再导入
      

  2.   

    把编码统一!要用GBK,数据库,程序,页面都用gbk,用utf-8,那就都用utf-8!
      

  3.   

    mysql_query("set names gbk");
      

  4.   

    1.首先用下面的函數改變數據庫編碼為'utf8_unicode_ci'
    2.改變好了的話在加上mysql_query("set names utf8");
    function change_code($db='',$code = 'utf8_unicode_ci')
    {
        $arr = explode('_',$code);
        $s = $arr[0];
        mysql_select_db($db);
        $sql = "ALTER DATABASE `$db` DEFAULT CHARACTER SET $s COLLATE $code";
        mysql_query($sql);
        $sql = "SHOW TABLE STATUS FROM $db ";
        $result = mysql_query($sql);
        while($row = mysql_fetch_array($result))
        {
            if($row['Collation'] != $code){
                $sql = "ALTER TABLE `{$row['Name']}`  DEFAULT CHARACTER SET $s COLLATE $code";
                mysql_query($sql);
            }
            $sql = "SHOW FULL COLUMNS FROM `{$row['Name']}`";
            $result2 = mysql_query($sql);
            while($row2 = mysql_fetch_array($result2))
            {
                $null = $row2['Null'] == 'YES'?'NULL':'NOT NULL';
                if(is_null($row2['Default']) && $row2['Null'] == 'YES'){
                    $default = 'NULL';
                }elseif(is_null($row2['Default']) && $row2['Null'] == 'NO'){
                    $default = "''";
                }else{
                    $default = "'{$row2['Default']}'";
                }
                if($row2['Collation'] != $code && !is_null($row2['Collation'])){
                    $sql = "ALTER TABLE `{$row['Name']}`  CHANGE  `{$row2['Field']}` `{$row2['Field']}` {$row2['Type']} CHARACTER SET $s COLLATE $code $null DEFAULT $default";
                    mysql_query($sql);
                }
            }
        }
    }
      

  5.   

    哦,是这样的之前网站一直用GBK, 现在其它软件想调用网站数据,需要PHP提供json格式数据,这个PHP文件需要UTF8编码在不改变数据库编码的情况下,怎么实现呢?谢谢楼上各位热心帮助
      

  6.   

    本办法:
    就爱那个你的页面代码复制到记事本;
    新建utf8文件,将记事本内容移至该文件;
    修改汉字。
    ……
    Dreamweaver可以重新加载不同编码的文件
      

  7.   

    选择数据库后执行一下
    mysql_query('set names utf8');
      

  8.   

    如果不改變數據庫編碼的話就比較麻煩了。
    你要在每個文件上面加上
    <?php 
      header("Content-Type:text/html;charset=gbk"); 
      如果還有亂碼的話,數據庫連接時在加上
      mysql_query('set names gbk');
    ?>
      

  9.   

    mysql 改字符集这么容易么?
      

  10.   

    要改mysql字符集干什么? set names 只是改了会话语言
    就如同你和英国人交流是用英语,和日本人交流用日语,或者让他们用国语,是一个道理
      

  11.   

    涉及到mysql设置的客户端编码以及server端返回的编码以及数据库自身编码,只有这样mysql才能在内部正确的转来转去。set names utf8只是设置客户端query的编码,如果query里没有非ASCII字符是没用的。这个问题本身就不单纯,楼主还是先统一数据库的server,client,database三个编码之后再说吧。
      

  12.   

    数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。知道了WEB开发中哪些地方涉及到了编码,也就知道了PHP页面乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。下面是一些常见的错误情况与解决:1、数据库采用GB2312编码,而页面申明编码是UTF8,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是PHP页面乱码,需要在查询前先使用:mysql_query("SET NAMES UTF8"); 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:
    mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。详细原文:http://www.phpnewer.com/index.php/Cjwt/detail/id/367