Topic: 终于搞定了mysql 4.1的中文问题:D |
Print this page |
1.终于搞定了mysql 4.1的中文问题:D | Copy to clipboard |
Posted by: wuliang Posted on: 2004-11-01 11:04 4.0之前用缺省字符集latin1,连接加useUnicode=true&characterEncoding=GBK可以了, 后来因为有子查询的需要,升级到4.1,发现这招失灵,经过一天摸索,终于搞定:D 1、mysql字符集要设成utf8,可以在安装时设置,也可以在my.ini里改(需要重新启动mysql) #必须在[mysqld]这段 [mysqld] default-character-set=utf8 这就足够,设置后重启server,用mysqladmin variables命令检查 | character_set_client | utf8 | character_set_connection | utf8 | character_set_database | utf8 | character_set_results | utf8 | character_set_server | utf8 | character_set_system | utf8 | collation_connection | utf8_general_ci | collation_database | utf8_general_ci | collation_server | utf8_general_ci 2、jdbc连接无需加characterEncoding,会自动检测 jdbc:mysql://localhost/test 实际上server端字符集不是utf8的话,加了也没用(jdbc:mysql://localhost/test&characterEncoding=UTF-8或者GBK) 可能还会报错;是utf8的话,加不加都行 3、mysql client记得加--default-character-set windows平台: mysql -u root -p --default-character-set=gbk linux平台: mysql -u root -p --default-character-set=utf8 否则进去select中文是乱码,insert中文也不能正确保存,一整天主要是被这个困扰~~ 这是我的办法,按理mysql字符集是latin1也可以操作中文(4.0就是这样),不过我没试出来,客户端还是需要额外编码 ****** windows xp简体中文 redhat fedora core 2, LANG=zh_CN mysql-4.1.7 |
2.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: scud Posted on: 2004-11-01 11:20 建的表或者database是utf-8也可以,如果服务器不是你控制的话 |
3.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: wuliang Posted on: 2004-11-03 21:45 hehe,竟然加了精:D |
4.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: chaiwei Posted on: 2004-11-05 00:51 无论采用什么字符集,只要将被查询的字段属性加为二进制,即可实现中文查询 |
5.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: wes109 Posted on: 2004-12-13 14:39 补充几点: 如果你已经创建了数据库,并且是latin1编码的,还需要修改具体数据库和表的charset 修改数据库的字符集:
修改具体表的字符集:
在建表时指定字符集:
|
6.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: lcwling Posted on: 2005-01-13 21:13 还是老问题,用utf8不知道客户端用什么工具方便view or edit?中文还是显示不太正常,不方便前端查看?! |
7.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: kirk Posted on: 2005-03-28 17:39 我试过楼主的方法,只有character_set_system的值为utf8,其他没有任何变化,why? 对了,我的mysql4。1非安装版的,是直接更新4.0的系统(除data目录)。 |
8.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: chengbd Posted on: 2005-04-18 06:18 经过几天的翻阅文档和实验,终于找到了比较好的解决办法。 可以不需要修改my.ini。 在建立数据库的时候,对库和表的字符集设置不太重要,但是对文本类型的字段最好都设置为GBK字符集。 对于已有的数据库可以用以下方法转换字段编码: ALTER TABLE t MODIFY hoverfly BINARY(100); ALTER TABLE t MODIFY hoverfly CHAR(100) CHARACTER SET gbk; 注意用此方法如果不修改程序,会发现查询出的结果都是乱码,可以通过在my.ini的[mysqld]段内加default-character-set=gbk来纠正。但是这样你会发现那些没有转换编码的文本字段里的中文都是乱码。 其实有更简单的办法,在进行查询前,只要执行SET character_set_results = NULL就可以。而且这是不管是转换了的还是没转换的字段都不会出现乱码。而转换了的字段可以正常的对中文进行排序。 |
9.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: chengbd Posted on: 2005-04-18 06:19 SET character_set_results = GB2312 在my.ini里 加入 default-character-set=gb2312 当然位置要放对了才可以 create database ......set charset=UTF-8 困扰了1天,昨天看了台湾的一个哥们写的说明才基本搞定。 在my.ini中的两处加入,分别是[mysqld]和[*client]处 default-character-set=gb2312 ,reboot机器(重要)。 在网页中就可以访问了,注意使用可视工具的来维护mysql的, 可能由于不支持中文的编码,插入中文数据后,仍然是乱码。 使用命令行的应该可以了。 另外gb2312也可以改成其他的编码方式,只要和jsp页上的统一即可。 |
10.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: benjaminliang Posted on: 2005-04-27 11:23 mysql> status -------------- D:\Program Files\MySQL\MySQL Server 4.1\bin\mysql.exe Ver 14.7 Distrib 4.1.11, for Win32 (ia32) Connection id: 1 Current database: qtedu Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 4.1.11-nt Protocol version: 10 Connection: localhost via TCP/IP Insert id: 98 Server characterset: gbk Db characterset: latin1 Client characterset: gbk Conn. characterset: gbk TCP port: 3306 Uptime: 18 min 49 sec ----------------- mysql> show variables like 'character%'; +--------------------------+------------------------ -----+ | Variable_name | Value | +--------------------------+------------------------ -----+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | latin1 | | character_set_results | gbk | | character_set_server | gbk | | character_set_system | utf8 | 表的字符集设置还真不起作用 ! 修改了字段的编码方式为gbk后,插入的数据显示都正常在Query Broswer中显示也正常, 不设置建立数据库的字符集 String DBConnStr="jdbc:mysql://localhost:3306/qtedu?user=root&password=benjamin"; 在jsp+bean的应用中插入和查询都正常。(用驱动mysql-connector-java-3.1.8-bin.jar) 新建立的数据库会按设置的默认的gbk编码,这时候字段也是默认的gbk了 昨天搞了一天 谢谢楼上各位!! |
11.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: dazern Posted on: 2005-05-13 01:44 还是不明白! 问题依旧! 哎 |
12.Re:终于搞定了mysql 4.1的中文问题:D [Re: wuliang] | Copy to clipboard |
Posted by: aiff Posted on: 2005-06-13 16:31 mysql> SHOW VARIABLES LIKE 'character_set_%'; 我现在变成这样了 怎么理解 是我以前的表的问题 还是现在的问题没有解决? |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |