+ -
当前位置:首页 → 问答吧 → utf-8和utf8的区别所在.

utf-8和utf8的区别所在.

时间:2007-05-15

来源:互联网

众所周知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呢,而且还不是乱码,一点道理都没有啊,大家说是吧?


作者: chenmeijian   发布时间: 2007-05-15

区别:

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

作者: wasuka   发布时间: 2007-05-15

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

作者: chenmeijian   发布时间: 2007-05-15

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

作者: paiqi_net   发布时间: 2007-05-15

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

作者: peterxuxu   发布时间: 2007-05-15

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

作者: Thaiki   发布时间: 2007-05-16

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

作者: iasky   发布时间: 2007-05-16

接楼上的,一样,只是在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 ");就行了。

作者: zdk210   发布时间: 2007-05-17

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

作者: Meteorlet   发布时间: 2007-05-17

都是一个啊,不同的地方叫法不一样

作者: sanler   发布时间: 2007-05-18

学习了~

作者: seashell126   发布时间: 2011-12-10

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

作者: xiachao2008   发布时间: 2011-12-10

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

作者: xiachao2008   发布时间: 2011-12-10

引用 11 楼 xiachao2008 的回复:
写mysql程序员写法的一个错误 少写了了“-”还得我们全中国人都得根着他写。

作者: hllfl   发布时间: 2011-12-10

引用 11 楼 xiachao2008 的回复:

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


MySQL 内流满面

作者: PhpNewnew   发布时间: 2011-12-10

呵呵,,,,,,,

我只有这样认为了。


引用 14 楼 phpnewnew 的回复:

引用 11 楼 xiachao2008 的回复:

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


MySQL 内流满面

作者: xiachao2008   发布时间: 2011-12-10

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

作者: hengyu654   发布时间: 2011-12-10

引用 15 楼 xiachao2008 的回复:

呵呵,,,,,,,

我只有这样认为了。


引用 14 楼 phpnewnew 的回复:

引用 11 楼 xiachao2008 的回复:

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


MySQL 内流满面

....

作者: chenandczh   发布时间: 2011-12-10

相关阅读 更多