Bill_huohuo 发表于 2005-4-20 06:43:10

还是请教UTF-8问题

首先感谢各位大哥大姐对小弟从前几个UTF-8问题的回答,给了我很大帮助,现请教另一问题:

小弟根据碧轩大哥对UTF-8的总结http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=101961
写了类似下面的表格:
CREATE TABLE `table01` (
`field01` varchar(50) character set utf8,
`field02` text character set utf8,
PRIMARY KEY (`field01`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

这个表格在MySQL-4.1.7下工作正常。但在MySQL-4.0.18下无法创建,直到我把表修改为:
CREATE TABLE `table01` (
`field01` varchar(50) character set utf8,
`field02` text,
PRIMARY KEY (`field01`)
) ;
在MySQL-4.0.18下才顺利创建。

请问在MySQL-4.0.x下为什么varchar(50)类型后面可以使用character set utf8,而text类型后面不可以?如何才能将text类型修改为UTF-8呢?

另外,看碧轩大哥的帖子,MySQL-3.x不支持UTF-8,那请问在MySQL-3.x下有没有支持多语言的办法?

多谢!

涩兔子 发表于 2005-4-20 09:19:06

在MySQL-4.0.18没有必要刻意为字段类型制定charset,只要你的PHP程序往数据库里写入的是UTF-8编码就可以了

为什么在MySQL4.1.x下要制定呢?因为4.1.x引入了MySQL charset和MySQL connection collation的概念(在4.0.x下是没有的),注意这是MySQL数据库级的设定,高于表级设置

所以在MySQL4.1.x下,特别是碧轩的服务器下 :mrgreen:(使用碧轩的服务器还是很郁闷的,charset gb2312不支持了,Kara可以作证,碧轩不要打人 :oops:),要在PHP程序往数据库写数据之间,加上

if ( $dbms = 'mysql' ) {
        $db->Execute("SET NAMES 'utf8'");
}
,虽然我的本地AS4的服务器环境和碧轩设置的一致,但不需要加这个,我感觉到后背有人在戳我:evil:

针对4.3.x就只能使用ISO-XXX了

Bill_huohuo 发表于 2005-4-20 09:27:38

多谢色兔版主,小弟再去试试。
对于MySQL 3.x,看来只能放弃了,毕竟感觉多语言支持还是蛮必要的。

涩兔子 发表于 2005-4-20 09:32:48

对MySQL4.1.x是官方强烈推荐的 :mrgreen:

还有是涩不是色 :oops:

Bill_huohuo 发表于 2005-4-20 09:36:33

另外,关于要在PHP程序向数据库插入数据前加上mysql_query("SET NAMES 'utf8'");的问题,小弟试了试,不知为什么,在我的MySQL-4.1.7上似乎是不需要,只要把表里那些field加上character set utf8就可以了。大概是我设置上的问题吧。

涩兔子 发表于 2005-4-20 09:37:56

另外,关于要在PHP程序向数据库插入数据前加上mysql_query("SET NAMES 'utf8'");的问题,小弟试了试,不知为什么,在我的MySQL-4.1.7上似乎是不需要,只要把表里那些field加上character set utf8就可以了。大概是我设置上的问题吧。

说明你和我都设置对了,一般是不需要的,碧轩的服务器上需要(碧轩要没收我的空间了) :(
页: [1]
查看完整版本: 还是请教UTF-8问题