在linux 下,select * from表的时候出现乱码?

chengxuyuan_111 2009-06-26 06:58:05
在linux的图形模式下, 打开终端,运行命令没问题,
但是在linux命令行下,select * from表 ,会出现中文乱码的情况,如何解决。
...全文
219 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengxuyuan_111 2009-06-27
  • 打赏
  • 举报
回复
问题解决了
假设你的xxx.sql文件的编码为 yyy
那么mysql xxx < xxx.sql之前先 set names yyy
一切ok~~
不用管原来数据库和现在数据库的字符集。
当然如果从utf8到ascii之类的转换大概是不行的


set names gdk 直接在登录数据库之前的系统指令,是么?
chengxuyuan_111 2009-06-27
  • 打赏
  • 举报
回复
知道,为什么在linux下出现乱码了,其实那个不是乱码,是因为我的linux下不支持中文。

在图形界面的时候,select * from table 时,不出现乱码。


在图形界面里,在sql> select * from table into outfile 'file name';时,生成的文件中不出现乱码,简体中文还是简体中文。

无论在图形界面,还是命令行,只要mysqldump ,就会使中文变成下面的样子。

1 恭敬现
2 我
3 国精

3,'?煤???梅'),(1,'鎭暚鐜�),(2,'鎴�),(3,'鍥界簿鏄


我想问的是,是不是 linux系统 ,在#,提示符下,不支持中文的问题阿?
chengxuyuan_111 2009-06-26
  • 打赏
  • 举报
回复
粗略的读了一下,你这里说的也不是很清楚。  还有教育网上这个论坛有点慢。

2. 确保,联接参数与这个字段字符集一致,你可以用 set name 'charsetname';
比如, set name 'gbk';
这条命令会同时修改 character_set_client,character_set_connection,character_set_results
(如果你的这架MySQL中都为中文,则你可以在my.ini或my.cnf中加上或修改这个参数, 参数文件修改后需重启MySQL服务)
[mysql]
default-character-set=gbk
ACMAIN_CHM 2009-06-26
  • 打赏
  • 举报
回复

一楼贴出来的一个贴子你有没有读一下?
chengxuyuan_111 2009-06-26
  • 打赏
  • 举报
回复
我在 /etc/my.cnf 里面设置了 
[mysql]
default-character-set=gbk
chengxuyuan_111 2009-06-26
  • 打赏
  • 举报
回复
create table ss1
-> (
-> id int(3) default null,
-> name char(10) default null
-> )engine=muisam default charset=gbk;



set names 'gbk'.难道不是这样设置 default charset=gbk ?
ACMAIN_CHM 2009-06-26
  • 打赏
  • 举报
回复

有没有 set names 'gbk'; ?
chengxuyuan_111 2009-06-26
  • 打赏
  • 举报
回复
我按5搂,我的方法试了,不行,在linux命令行下,select * from student; 显示还是乱码。

你六楼的方法和我5搂的方法,没啥区别啊?

我刚才以为是我建表的时候,没加ENGINE=MyISAM DEFAULT CHARSET=gbk的缘故。
create table student
( id int(3) ,
name char(10) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk
但是我重建完表之后,加上ENGINE=MyISAM DEFAULT CHARSET=gbk了,还是不管用啊?!
ACMAIN_CHM 2009-06-26
  • 打赏
  • 举报
回复

不是,你先生成 /home/gg.txt
重新建表以后,再
mysql> LOAD DATA INFILE '/home/gg.txt ' INTO TABLE student;
chengxuyuan_111 2009-06-26
  • 打赏
  • 举报
回复
select * from thisTable INTO OUTFILE '/home/gg.txt' , 执行完这条指令后,生成的txt文档里面的中文没有乱码,
内容如下:

1 恭敬现
2 \\n
3 国精明

这是为什么阿?

你的意思是把表的数据,导出到txt文档里保存。

在sql里,加上create table student
( id int(3) ,
name char(10) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk

加上ENGINE=MyISAM DEFAULT CHARSET=gbk后,

再把数据导回来,是么?
ACMAIN_CHM 2009-06-26
  • 打赏
  • 举报
回复

你有多少个这样的表?

如果只有一个,则 select * from thisTable INTO OUTFILE 'file_name' ; 然后建好表后再LOAD DATA INFILE 导回即可
chengxuyuan_111 2009-06-26
  • 打赏
  • 举报
回复
mysql> show create table student;
+---------+----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+----------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int(3) default NULL,
`name` char(10) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+---------+----------------------------------------------------------------------------------------------------------------------------+
chengxuyuan_111 2009-06-26
  • 打赏
  • 举报
回复
嘿嘿,明白了,建表的时候,我没有设置字符集,所以默认变成CHARSET=latin1 |
的了。应该在建表开始没添数据时,设置字符集gbk.

但是现在那个表我已经建好了,数据都添进去了,我不想重新建表,有没有解决乱码的方法阿?
ACMAIN_CHM 2009-06-26
  • 打赏
  • 举报
回复

字符集的问题。用set name 设置一下就行了。

http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码


56,683

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧