select * from mytable into outfile '/tmp/dbinfo.txt';
后得到的中文字符乱码。
需要怎么设置解决乱码问题?
另外两个问题:
我在mysql客户端中直接执行 select * from mytable;得到的中文字符时正常的;
在代码中执行select * from mytable 返回结果集,再自己写文件,得到的中文字符也是正常的。
请问这是为什么?
谢谢各位~
8 个解决方案
#1
建議可考慮使用 mysqldump 的指令試匯出看看...
#2
show varialbles like 'char%';
确保所有的字符集都是gbk
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\mysql-5.0.9-beta-win32\share\charsets/ |
+--------------------------+-------------------------------------------+
这样导出不致于乱码
确保所有的字符集都是gbk
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\mysql-5.0.9-beta-win32\share\charsets/ |
+--------------------------+-------------------------------------------+
这样导出不致于乱码
#3
set names 'gbk'
select * from mytable into outfile '/tmp/dbinfo.txt';
可以参考下贴中的说明。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
select * from mytable into outfile '/tmp/dbinfo.txt';
可以参考下贴中的说明。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
#4
谢谢各位!
to ACMAIN_CHM:
十分感谢你多次帮助。
试了你的方法,但还是不行:(
我之前的的设置是:
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
set names 'gbk'后,
character_set_client gbk
character_set_connection gbk
character_set_database latin1
character_set_filesystem binary
character_set_results gbk
character_set_server latin1
character_set_system utf8
但这时候 select * from mytable into outfile '/tmp/dbinfo.txt';得到的中文字符还是乱码~
为什么呢?
其实我更想知道的是:
之前我的设置全是latin1时,
1,在mysql客户端中直接执行 select * from mytable;得到的中文字符时正常的;
2,在代码中执行select * from mytable 返回结果集,再自己写文件保存,得到的中文字符也是正常的。
为什么这两种情况下得到的中文字符是正常的,而select * from mytable into outfile '/tmp/dbinfo.txt' dbinfo.txt中的中文字符就乱码?
to ACMAIN_CHM:
十分感谢你多次帮助。
试了你的方法,但还是不行:(
我之前的的设置是:
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
set names 'gbk'后,
character_set_client gbk
character_set_connection gbk
character_set_database latin1
character_set_filesystem binary
character_set_results gbk
character_set_server latin1
character_set_system utf8
但这时候 select * from mytable into outfile '/tmp/dbinfo.txt';得到的中文字符还是乱码~
为什么呢?
其实我更想知道的是:
之前我的设置全是latin1时,
1,在mysql客户端中直接执行 select * from mytable;得到的中文字符时正常的;
2,在代码中执行select * from mytable 返回结果集,再自己写文件保存,得到的中文字符也是正常的。
为什么这两种情况下得到的中文字符是正常的,而select * from mytable into outfile '/tmp/dbinfo.txt' dbinfo.txt中的中文字符就乱码?
#5
你导出后,用WORD打开文件,看看有无提示
#6
show create table 你的检查结果贴在哪儿了?
#7
嗯,用word打开两个文件有选择文本编码的提示:
在代码中执行select * from mytable 返回结果集,再自己写文件保存的文本用word打开,编码是GB2312;
但是select * from mytable into outfile '/tmp/dbinfo.txt';用word打开dbinfo.txt,编码是UTF-8.
这就解释了为什么前者显示正常,后者乱码了。
但是没想明白的是为什么有这两种编码的差异?
在代码中执行select * from mytable 返回结果集,再自己写文件保存的文本用word打开,编码是GB2312;
但是select * from mytable into outfile '/tmp/dbinfo.txt';用word打开dbinfo.txt,编码是UTF-8.
这就解释了为什么前者显示正常,后者乱码了。
但是没想明白的是为什么有这两种编码的差异?
#8
网络不通,贴不了,敲在下面吧~
CREATE TABLE 'mytable'(
...
)ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 COLLATE 'utf8_gemeral_ci'
CREATE TABLE 'mytable'(
...
)ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 COLLATE 'utf8_gemeral_ci'
#1
建議可考慮使用 mysqldump 的指令試匯出看看...
#2
show varialbles like 'char%';
确保所有的字符集都是gbk
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\mysql-5.0.9-beta-win32\share\charsets/ |
+--------------------------+-------------------------------------------+
这样导出不致于乱码
确保所有的字符集都是gbk
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\mysql-5.0.9-beta-win32\share\charsets/ |
+--------------------------+-------------------------------------------+
这样导出不致于乱码
#3
set names 'gbk'
select * from mytable into outfile '/tmp/dbinfo.txt';
可以参考下贴中的说明。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
select * from mytable into outfile '/tmp/dbinfo.txt';
可以参考下贴中的说明。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
#4
谢谢各位!
to ACMAIN_CHM:
十分感谢你多次帮助。
试了你的方法,但还是不行:(
我之前的的设置是:
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
set names 'gbk'后,
character_set_client gbk
character_set_connection gbk
character_set_database latin1
character_set_filesystem binary
character_set_results gbk
character_set_server latin1
character_set_system utf8
但这时候 select * from mytable into outfile '/tmp/dbinfo.txt';得到的中文字符还是乱码~
为什么呢?
其实我更想知道的是:
之前我的设置全是latin1时,
1,在mysql客户端中直接执行 select * from mytable;得到的中文字符时正常的;
2,在代码中执行select * from mytable 返回结果集,再自己写文件保存,得到的中文字符也是正常的。
为什么这两种情况下得到的中文字符是正常的,而select * from mytable into outfile '/tmp/dbinfo.txt' dbinfo.txt中的中文字符就乱码?
to ACMAIN_CHM:
十分感谢你多次帮助。
试了你的方法,但还是不行:(
我之前的的设置是:
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
set names 'gbk'后,
character_set_client gbk
character_set_connection gbk
character_set_database latin1
character_set_filesystem binary
character_set_results gbk
character_set_server latin1
character_set_system utf8
但这时候 select * from mytable into outfile '/tmp/dbinfo.txt';得到的中文字符还是乱码~
为什么呢?
其实我更想知道的是:
之前我的设置全是latin1时,
1,在mysql客户端中直接执行 select * from mytable;得到的中文字符时正常的;
2,在代码中执行select * from mytable 返回结果集,再自己写文件保存,得到的中文字符也是正常的。
为什么这两种情况下得到的中文字符是正常的,而select * from mytable into outfile '/tmp/dbinfo.txt' dbinfo.txt中的中文字符就乱码?
#5
你导出后,用WORD打开文件,看看有无提示
#6
show create table 你的检查结果贴在哪儿了?
#7
嗯,用word打开两个文件有选择文本编码的提示:
在代码中执行select * from mytable 返回结果集,再自己写文件保存的文本用word打开,编码是GB2312;
但是select * from mytable into outfile '/tmp/dbinfo.txt';用word打开dbinfo.txt,编码是UTF-8.
这就解释了为什么前者显示正常,后者乱码了。
但是没想明白的是为什么有这两种编码的差异?
在代码中执行select * from mytable 返回结果集,再自己写文件保存的文本用word打开,编码是GB2312;
但是select * from mytable into outfile '/tmp/dbinfo.txt';用word打开dbinfo.txt,编码是UTF-8.
这就解释了为什么前者显示正常,后者乱码了。
但是没想明白的是为什么有这两种编码的差异?
#8
网络不通,贴不了,敲在下面吧~
CREATE TABLE 'mytable'(
...
)ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 COLLATE 'utf8_gemeral_ci'
CREATE TABLE 'mytable'(
...
)ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 COLLATE 'utf8_gemeral_ci'