MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3124|回复: 4
打印 上一主题 下一主题

问一个关于character set的问题[已解决]

[复制链接]
跳转到指定楼层
1#
发表于 2009-9-2 16:37:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 aureliano 于 2009-9-3 16:21 编辑

很窘很窘
机器上有一个lantin1的mysql
当时懒得重新编译,就直接把一个utf8的databaseA导进去了,想也不会有啥问题,后来又自己建了一个utf8的databaseB,两个database中都有table包含中文的column
现在问题来了:
进入任何一个database, 输入SHOW VARIABLES LIKE 'char%';
都会显示:
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
--------------------------------------------------------------------------
但是在databaseA中,查询有中文的column,会出现???,如果是用INTO OUTFILE保存到文件中,则可正常显示。
在databaseB中,查询有中文的column,正常显示,但是用INTO OUTFILE保存到文件中,则是乱码。

如果使用SET NAMES 'utf8'
对databaseA的查询显示问题消除,保存的文件也正常,但databaseB的显示也是乱码,保存到文件还是乱码。

请问这是怎么造成的?要怎么修改才能正常保存databaseB中的中文column到文件?
用SHOW CREATE DATABASE和SHOW CREATE TABLE去看databaseB及其中的table,都显示CHARSET utf8,和databaseA一样,那么这种查询结果的差异是怎么造成的呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2009-9-2 19:38:15 | 只看该作者
MySQL由3个地方来控制字符集,服务器端、客户端、连接。只有在这3个都一致的情况下,是最好的(有的字符集大有的字符集小)。导出数据,导入数据时需保持一致,那么就不会有问题了,而set names 'xxx',就是让其保持一致的方法之一。
你这里应该在导入、导出时保持一致,同数据库的设置保持一致,连接查看时也应该保持一致...

另外在论坛中搜索标签:乱码  也可以看到很多有用的帖子
3#
 楼主| 发表于 2009-9-3 10:36:09 | 只看该作者
2# kider
好的,谢谢
4#
 楼主| 发表于 2009-9-3 16:20:33 | 只看该作者
哈哈,我找到解决办法了

原来select .. into outfile 是储存在server上的办法
如果在shell里用mysql <batch_source> output就可以得到正常显示的文件了
5#
 楼主| 发表于 2009-9-3 16:48:58 | 只看该作者
4# aureliano

窘窘窘。
居然不是这样的。
输出的row较少的时候没问题
整表输出就是乱码
这都行。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-9-20 05:54 , Processed in 0.118792 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表