西西河

主题:【原创】MYSQL数据库中有关CHARACTER SET方面内容 -- 心文连博

共:💬4 🌺4 新:
全看分页树展 · 主题
家园 【原创】MYSQL数据库中有关CHARACTER SET方面内容

看到信息技术里有人提出这个问题求助, 因为前一段时间一直在被这个困扰折磨, 所以忍不住把自己的经验拿出来分享一下。 之所以说忍不住,是因为这个所谓新兵营的机制我不能在对应的贴子里回帖,还要跑到这里上贴,烦都要烦死掉, 不知哪个弱智的idea。 这样对control好些, 但对别人造成的不便就不管了。 好像这种思维的后面是堵而不是引,更不用提参与二字,真是特殊国情下的典型产物。

好了废话说够,心里痛快些了。言归正传。 mysql4.1的charset与collation。 第一, 如果你的网站是中文GB的, 可以照用latin1,也就是默认的collation。 如果是utf的, create database时要加上 collation为utf_general_ci的开关,这个有人提过了。 第二是, mysql_connect,如果是gb,用latin1,不用改动,如是utf的要把connection设成utf,以下是我在phpbb里加的:

$result = mysql_query('SET character_set_client = utf8', $this->db_connect_id) or die('Query failed: ' . mysql_error());

$result = mysql_query('SET character_set_results = utf8', $this->db_connect_id) or die('Query failed: ' . mysql_error());

$result = mysql_query('SET character_set_connection = utf8', $this->db_connect_id) or die('Query failed: ' . mysql_error());

第三是在做mysqldump与restore是也要加default_character_set=utf...的开关才能保证utf数据的完整。GB latin1不需要。

第四是在web server里加上header, content_type来显示utf, 如果还有??字, 就把一些include的中文语言包用notepad打开再save as成utf8的,这也是针对utf的文字, GB latin1倒是不需要。

在phpmyadmin里, 中文utf没问题, 但gb/latin1会自动把页面改称utf8于是出现乱码。 但phpmyadmin 2.61里可以设collation与charset,而且是从页面,connection到database三项都有, 改用gb就可以了。

>>>>>>>>>>>>>>>>

"【求助】MYSQL数据库中有关CHARACTER SET方面内容

之前一直是用的MYSQL 4.0,CHARACTER SET也就是缺省的LATIN1。中文显示、存储在西西河的页面上没有问题,在PHPMYADMIN中也没有问题。

最近因为MYSQL4.0的一些安全问题,故而升级到了4。1

结果其中的CHARACTER SET方面变化非常大。虽然西西河的页面显示、存储方面依旧没有问题,但是在PHPMYADMIN中就出现了一些显示上的问题。到目前为止,依旧不能够正常显示中文字符。

不知道哪位熟悉这方面内容。

从长远的看,必须得给每个表设定CHARACTER SET,而不能再简单使用缺省的字符集。现在的问题是,转换方面恐怕要费一番功夫。是用GBK还是用UTF8也是个问题。转换以后,现有的页面大概也要相应更改。

对4。1极其不熟悉:(

怎么样在转换的过程中保证字符的正确,眼下是个大难题。至少试了几种方法后,在PHPMYADMIN中还是无法显示正常。如果是在PHPMYADMIN中直接输入中文保存,没有问题。但是原有数据不能正确转换的话,那是个大问题。 "

全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河