还是MYSQL的乱码问题,又有新的发现
这个问题本以为已经解决了,但是后来的一些运用又不断的推翻了我以前的理解:
1.原以为,从mysql4.0导入到mysql4.1需要所有TYPE=MyISAM替换为ENGINE=MyISAM DEFAULT CHARSET=gbk等更改。但是后来发现,如果不使用PHPMYADMIN 2.7,而使用PHPMYADMIN 2.5 来导入MYSQL4.0的数据到MYSQL4.1,则无需做任何更改,而且就连set names gbk这句都可省略掉了!
而我以前使用PHPMYADMIN 2.7 先得做TYPE=MyISAM替换,然后导入到MYSQL 4.1,导入完成后还非得set names gbk,才能正常读出和写入。
2.今天又发现的新问题,就是使用PHPMYADMIN 2.7导入MYSQL 4.0的数据到MYSQL 5.1.6的时候也不用设置TYPE=MyISAM替换,但是需要设置set names gbk.
还有诸多问题就不一一道出了,不弄清楚MYSQL的原理,做项目心里面真是没底,希望大家能帮我彻底的搞清楚这个问题。
大家可参照:tiantian2.bigwww.com(第一个问题的示例,使用PHPMYADMIN 2.5从MYSQL4.0导入数据到MYSQL 4.1,无需做任何更改直接导入,而且导入后不需要set names gbk)
问题点数:20、回复次数:9Top
1 楼mynamesucks(迅雷不及掩耳盗铃之势如破竹)回复于 2006-07-03 10:08:19 得分 0
和你有同样的感觉Top
2 楼xuzuning(唠叨)回复于 2006-07-03 10:10:30 得分 0
个人观点
phpmyadmin自2.6起加入了关于字符集的功能,但是始终都没有处理好
phpmyadmin在处理数据交换时使用了mbstring扩展库,这是不应该的。
所以,建议不要用phpmyadmin2.6以后的版本做数据导入导出的工作。除非你确切的知道结果是什么
数据库是用来保存数据的。近来什么就出去什么,不能有任何失真,这是基本原则
数据库引入字符集的概念是为了更好的处理非英语的语言文字。但是至少mysql到目前为止还没有完全实现这个目标。换句话说就是mysql依然不是宽字符可靠的数据库。
Top
3 楼longxin123(龙的心)回复于 2006-07-03 11:48:10 得分 0
http://blog.chinaunix.net/u/19869/showart.php?id=121729Top
4 楼tianyaxiao()回复于 2006-07-03 12:02:42 得分 0
为什么MS的ACCESS,MSSQL等都没用这些问题,MS的实现方法很难么?Top
5 楼tianyaxiao()回复于 2006-07-03 12:09:36 得分 0
TO longxin123(龙的心) :
这个方法俺早知道了,因为条件限制从来没用过(虚拟主机),另外“存入的和读取的编码一致就不会再产生乱码”,很不具体,分很多环境的啊,现在我做的东西也不会出现乱码,但是都只是按网上提供的方法进行的操作,只是感觉很玄乎。Top
6 楼ashchen(老陳)回复于 2006-07-03 14:14:28 得分 0
个人感觉mysql5乱码问题
4.0及以前版本,单字节和多字节是可以混合存的
4.1及以后版本,是根据字段的编码来存的
英文只要单字节就能解决,但是汉语,有abc,也有双字节和多字节
有88591也有gb2312,以及utf-8
4.1以后严格区分了这三种格式所以不能象以前那样偷懒也可以不出错
另外phpmyadmin在这个阶段没有处理好这个问题是问题根源所在
phpmyadmin是老外维护的,他们不大关心多字节问题
我们可以看到4.1以后phpmyadmin字节把编码变成utf-8就不管了,而国内多大多数还是用gb2312或gbk,所以这就出现了现在的问题,本来想改一下phpmyadmin的utf-8成gbk,支持的人太少就放弃了
选择其他mysql客户端管理mysql也许是比较好的选择例如mysql-frontTop
7 楼xwsn(孤帆远影)回复于 2006-07-04 09:07:50 得分 0
记号Top
8 楼rose999(gsz0506)回复于 2006-08-15 10:36:59 得分 0
upTop
9 楼Gdj(陈水.智商只有129.非卖品)回复于 2006-08-15 11:10:04 得分 0
从来不用phpmyadmin。功能太少。Top




