众所周知php中有设置提取数据时设置编码格式的语法:$temp=mysql_query("set names utf-8");
查询显示数据的语句.....................;如果我的数据库的编码格式为utf8(我用的是mysql-gui-tools)创建的表,里面选择数据库编码格式的时候没有utf-8只有utf8.所以我就选择了utf8.如果我设置:$temp=mysql_query("set names utf-8");
查询显示数据的语句.....................; //显示数据为乱码,即ie用utf-8编码格式显示数据.
如果我设置:$temp=mysql_query("set names utf8");
查询显示数据的语句.....................; //显示数据为乱码,即ie用utf-8编码格式显示数据.
我想请问一下,utf-8和utf8是否为同一种编码呢?
还有就是如果我用命令建立表的时候可否设置编码格式为utf-8而不用utf8.?还有一点就更奇怪了,我的表的编码格式为:utf8时,
如果我设置:$temp=mysql_query("set names gb2321");
查询显示数据的语句.....................; //显示数据正常,即ie用gb2312编码格式显示数据.请问此时在php脚本怎么能把utf8编码转换为gb2312呢,而且还不是乱码,一点道理都没有啊,大家说是吧?

解决方案 »

  1.   

    区别:mysql> set names utf-8;
    ERROR 1115 (42000): Unknown character set: 'utf'
    mysql> set names utf8;
    Query OK, 0 rows affected (0.11 sec)
      

  2.   

    那么是否是说在mysql中utf8也就是我们平时说的utf-8(即英文用一个字节表示,中文用3个字节表示?)
    如果是这样的话,那么我的表的编码为utf8,$temp=mysql_query("set names gb2312"),之后查询数据并输出结果,不会是乱码,而gb2312是一个汉字2个字节,想请问你一下,此时的编码是如果转换过来的呢,难道mysql_query()这个函数有转换这个功能不成? 还有如果不设置mysql_query("set names gb2312")这句话的时候,在php脚本中读取和插入数据默认的用的是什么编码?
      

  3.   

    好你没什么区别。你再看一下,你表里的字段的整理一项用的是什么编码,是否是:utf8-gen**** 之类的。
      

  4.   

    是没有区别的utf8-bin这些仅仅是整理集,用于说明查询和存储时的排序方式比如utf8-bin就是一个区分大小写的按照ascii码的顺序大小依次排列的整理集
      

  5.   

    utf8 和 utf-8 意义一样,表示不一样而已!
    比方你跟一个英国人(不懂汉语的)说汉语:我是中国人!他不明白!
    然后你改口 I'm a Chinese! 他就明白了!
    然后就是一句经典台词:
    他明白了,你明白了么?
      

  6.   

    一样,只是在mysql中用utf8而已,就是指代一种编码
      

  7.   

    接楼上的,一样,只是在mysql中用utf8表示utf-8而已,就是指代一种编码。
    在php中mysql_query("set names utf-8");因为mysql中定义的是utf8而不是utf-8,所以这条语句是执行不成功的,效果和mysql_query("set names test")一样,所以你存储和获得的mysql编码并没有改变。改为
    mysql_query("set names utf8");就行了。
      

  8.   

    mysql_query("set names gb2312"); 就是告诉mysql SELECT 出来的数据转换成gb2312.
    如果mysql存的是utf8,就会自动转换成gb2312.
      

  9.   

    写mysql程序员写法的一个错误 少写了了“-”还得我们全中国人都得根着他写。
      

  10.   

    以后你牛了,写点东西,让在家用用,,你也可以写成 8utf  8ftu 等等
      

  11.   

    在mysql中用utf8表示utf-8编码,其中一个很重要的原因可能是:"-"号同样代表了减法运算,而且sql语句中使用到"-"号的时候应该也很多.为了在解析sql语句时,不耗费过多的时间,这样做是有道理的。
    (以上仅个人看法,没有证实过)
      

  12.   

    准确地说,你说的这个事情跟 PHP 基本上没有关系,这只是 mysql 的事情。mysql 只认识 "utf8",不认识 "utf-8",这个只要搞清楚就好了。在自然语言中,这两者的含义没有什么特别的区别。同上。这个是最没有什么可奇怪的,mysql 的 set names 命令的作用经常被误解,所以你会觉得奇怪。set names 命令是用于“客户端告诉 mysql 服务器说:下面我要用 xxx 编码方式跟你说话了,你也要用这种编码方式跟我说话”。所以,这里指定的编码方式跟“数据库表的存储编码方式”没有任何关系,mysql 会替你把所需要的编码转换都做好。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  13.   

    数据库是utf8 其它地方一般是utf-8
      

  14.   

    MYSQL里没有UTF-8一说,只有UTF8;
    HTML里没有UTF8一说,只有UTF-8。
      

  15.   

    区别就是mysql里面是utf8,而其他编码基本是utf-8。
      

  16.   

    像这样连楼主自己都不搭理的问题
    还这样踊跃回帖,这只能说明 php 已经没落了