当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 读取MYSQL中中文数据 乱码问题,请教大家
帖子发表于 : 2010-01-16 16:58 

注册: 2009-09-22 16:15
帖子: 54
送出感谢: 0 次
接收感谢: 0 次
最近,我安装了apache2+php5+mysql5
刚刚建立好。。准备做查询和搜索数据库的操作,结果发现 在mysql中无论选择何种字体,现实出来依然是乱码。
我查了论坛中这篇文章 完整照做

11.1 mysql乱码的问题
1.在终端输入命令 sudo gedit /etc/mysql/my.cnf在打开的文件中
找到[client]在下面加入
default-character-set=utf8
找到 [mysqld_safe]在下面加入
default-character-set=utf8
找到[mysqld]在下面加入
default-character-set=utf8
init_connect='SET NAMES utf8'
找到[mysql]在下面加入
default-character-set=utf8

2.(为了安全起见这一步最好执行)在终端输入命令 mysql -u root -p
提示你输入密码: 你的root用户的密码
进入到mysql输入命令set names utf8 //这里只可以是utf8不可以是utf-8,因为linux下的mysql不认识utf-8。

3.重启mysql命令以便让你上面的修改生效
sudo /etc/init.d/mysql restart

4.检查mysql字符集
命令 一:show variables like 'character%'; 出现
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

命令二:show variables like "collation_%"; 出现
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+

可是,我做了测试,结果依然是乱码。
注: 做完设置,我在mysql> 下输入‘命令1’ ‘命令2’结果和上述完全一样。。

请教一下大家,我应该如何处理这个问题 :em20


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 读取MYSQL中中文数据 乱码问题,请教大家
帖子发表于 : 2010-01-16 17:41 
头像

注册: 2008-11-05 13:24
帖子: 1024
送出感谢: 0 次
接收感谢: 5
我的资料里有解决办法,只需要client和mysqld的配置段设置
[ client ]
default-character-set=utf8
[ mysqld ]
default-character-set=utf8
skip-character-set-client-handshake
在mysql中默认字符集是latin1,
想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置:
·[client]
default-character-set=utf8
·[mysqld]
default-character-set=utf8
skip-character-set-client-handshake #此处是忽略客户端的字符集,使用服务器的设置
(skip语句和client中的default选一个)
当然你可以在建立数据库是规定字符集:
create database db_name default character set utf8 callate utf8-general-ci;
也可以在链接数据库前设置:set names 'utf8';

另外,你的系统环境是什么编码,有没有新建数据库和表试试?


_________________
笔记
-------------------------------------
http://blog.163.com/wqt_1101


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 读取MYSQL中中文数据 乱码问题,请教大家
帖子发表于 : 2010-01-16 20:37 

注册: 2009-09-22 16:15
帖子: 54
送出感谢: 0 次
接收感谢: 0 次
link_01 写道:
我的资料里有解决办法,只需要client和mysqld的配置段设置
[ client ]
default-character-set=utf8
[ mysqld ]
default-character-set=utf8
skip-character-set-client-handshake
在mysql中默认字符集是latin1,
想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置:
·[client]
default-character-set=utf8
·[mysqld]
default-character-set=utf8
skip-character-set-client-handshake #此处是忽略客户端的字符集,使用服务器的设置
(skip语句和client中的default选一个)
当然你可以在建立数据库是规定字符集:
create database db_name default character set utf8 callate utf8-general-ci;
也可以在链接数据库前设置:set names 'utf8';

另外,你的系统环境是什么编码,有没有新建数据库和表试试?


我的环境是在ubuntu9。1中,建立apache2+php5+mysql5的。
最开始的时候,我自己做的PHP页面也是无法正常显示中文。后来,我加了这句话,就可以了
<meta http-equiv=Content-Type content="text/html;charset=utf8">
mysql里,我做的小数据库测试,使用的都是utf8_general_ci。另外,根据您上面的提示,我也已经在my.cnf中加入了这些语句了。

不过,您说的。
“当然你可以在建立数据库是规定字符集:
create database db_name default character set utf8 callate utf8-general-ci;
也可以在链接数据库前设置:set names 'utf8';”

是在哪里设置输入阿。。我新建数据库,是采用phpmyadmin的图形界面的。我是在新建数据库,数据表和字段的时候,选择utf8_general_ci 不知道效果和您说的是否一样~~

请帮我把个关,谢谢~~


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 读取MYSQL中中文数据 乱码问题,请教大家
帖子发表于 : 2010-01-16 20:59 

注册: 2009-09-22 16:15
帖子: 54
送出感谢: 0 次
接收感谢: 0 次
另外,补充问一下。。我发现,导入(import database)数据库的时候,有这么个限制(Max: 2,048 KiB)
不知道去除的方法是啥。。另外,最大可以支持多少阿 :em03


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 读取MYSQL中中文数据 乱码问题,请教大家
帖子发表于 : 2010-01-16 23:58 
头像

注册: 2007-10-24 20:20
帖子: 1565
地址: 北京、海淀
送出感谢: 0 次
接收感谢: 1
http://dev.mysql.com/doc/refman/5.1/zh/ ... ysqlimport
官方文档并没有显示import命令有大小限制,建议你再看看数据库的其他默认设置。


_________________
Dell Vostro 1500, T7300/4GB/WD5000BEVT/nVidia 8400GM, Ubuntu 10.04 x86_64/VMware 7(Win7)
我的博客:http://xieshaohu.wordpress.com/


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 读取MYSQL中中文数据 乱码问题,请教大家
帖子发表于 : 2010-01-17 10:07 

注册: 2007-10-08 16:45
帖子: 82
送出感谢: 0 次
接收感谢: 0 次
方法1:
建立数据库到时候就建立成支持UTF-8的:
create database db_name default character set utf8;

方法2:
已经建立了库拉,也可以更改库的字符集,改成支持UTF-8的格式:
....(语句忘记拉,不过的确可以这么做)。
此方法对库中已经存在到记录无效,也就是说,之前你到数据库不支持UFT-8,你却把中文已经存进去拉,那里面之前存进去的就是乱码,此时就算你把支持改成UTF-8,里面到记录也依旧是乱码不会改变了。只对更改以后加入到数据有效。

从库中要取出中文到方法(用JAVA做例子):
url为:
jdbc:mysql://127.0.0.1:3306/db_name?useUnicode=true&characterEncoding=utf8
就算数据库支持utf8了,但是并不代表你能够从普通的链接里取到中文,此时必须建立一条支持utf8的链接。

同时,如果从web页面显示的话,必须在servlet里的输入和输出里做相应到更改,servlet默认输入输入/输出字符集为 iso-8859-1,此字符集不支持中文:
service方法内:
request.setChaeracterEncoding("utf-8");
输入设置为utf8,不然就算到数据库到链接是utf8,取出了中文,但是输入到servlet里面,这个servlet会把utf8的输入当作iso-8859-1理解,最后造成乱码。
response.setContentType("text/html;setchar=utf-8");
输出设置为utf8,不然过程中都按照中文处理,最后输出到web页面时却按照iso-8859-1输出,web页面就乱码。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 读取MYSQL中中文数据 乱码问题,请教大家
帖子发表于 : 2010-01-17 14:47 

注册: 2009-09-22 16:15
帖子: 54
送出感谢: 0 次
接收感谢: 0 次
en
谢谢大虾们
我已经设置好了。。大小限制也改过来了
可以把语句写在PHP页面里。。当然,上述的配置也是需要的 :em09


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译