QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1576|回复: 5

还是请教UTF-8问题

[复制链接]
发表于 2005-4-20 06:43:10 | 显示全部楼层 |阅读模式
首先感谢各位大哥大姐对小弟从前几个UTF-8问题的回答,给了我很大帮助,现请教另一问题:

小弟根据碧轩大哥对UTF-8的总结http://www.linuxfans.org/nuke/mo ... ic&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下,特别是碧轩的服务器下 (使用碧轩的服务器还是很郁闷的,charset gb2312不支持了,Kara可以作证,碧轩不要打人 ),要在PHP程序往数据库写数据之间,加上
[code:1]
if ( $dbms = 'mysql' ) {
        $db->Execute("SET NAMES 'utf8'");
}[/code:1]
,虽然我的本地AS4的服务器环境和碧轩设置的一致,但不需要加这个,我感觉到后背有人在戳我  

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

使用道具 举报

 楼主| 发表于 2005-4-20 09:27:38 | 显示全部楼层
多谢色兔版主,小弟再去试试。
对于MySQL 3.x,看来只能放弃了,毕竟感觉多语言支持还是蛮必要的。
回复

使用道具 举报

发表于 2005-4-20 09:32:48 | 显示全部楼层
对MySQL4.1.x是官方强烈推荐的

还有是涩不是色
回复

使用道具 举报

 楼主| 发表于 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 | 显示全部楼层
[quote:c440fb9177="Bill_huohuo"]另外,关于要在PHP程序向数据库插入数据前加上mysql_query("SET NAMES 'utf8'");的问题,小弟试了试,不知为什么,在我的MySQL-4.1.7上似乎是不需要,只要把表里那些field加上character set utf8就可以了。大概是我设置上的问题吧。[/quote]

说明你和我都设置对了,一般是不需要的,碧轩的服务器上需要(碧轩要没收我的空间了)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-20 05:33 , Processed in 0.084332 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表