求助!乱码的问题? (急急急急急急急急急急!!!)

sfl741852 2007-09-25 01:44:22
在5.0版本中,可以用.txt文本的方式导入数据库,但是格式和数据库里建好的表结构吻合!
可是在我在导入的时候出现了乱码????????的问题.
文本可以导入,但汉字全是乱码.问?为什么?
表结构如下:
id INTEGER
name VARCHAR(10) gb2312
sex VARCHAR(10) gb2312

文本的结果:
1 张小喊 男
2 张小喊 男
3 张小喊 男
..
.

导入数据库就成了
1 ????? ??
2 ????? ??


就是这样了
给位想想办法!!\
谢谢!!
...全文
4699 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadekiller318 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

alter database 你的数据库名 charset = gb2312;
[/Quote]
我输入这语句用heisql 工具一直显示sql error 1064
Spacetimer7554 2011-03-22
  • 打赏
  • 举报
回复
mark
xzg1109 2010-08-20
  • 打赏
  • 举报
回复
做个记号
dadigood 2010-08-12
  • 打赏
  • 举报
回复
mysql> show variables like '%char% ';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| 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 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
dadigood 2010-08-12
  • 打赏
  • 举报
回复
导入数据库就成了
1 ????? ??
2 ????? ??


就是这样了
给位想想办法!!\
谢谢!!
bhn147123 2008-11-15
  • 打赏
  • 举报
回复
fomyth 2008-11-10
  • 打赏
  • 举报
回复
Mark
fys249931556 2008-10-13
  • 打赏
  • 举报
回复
下边是配置信息:

mysql> \s
--------------
mysql Ver 14.12 Distrib 5.0.18, for Win32 (ia32)

Connection id: 5
Current database: b2b
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.18-nt
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
TCP port: 3306
Uptime: 1 hour 29 min 46 sec

Threads: 1 Questions: 6975 Slow queries: 0 Opens: 208 Flush tables: 1 Open
tables: 0 Queries per second avg: 1.295

fys249931556 2008-10-13
  • 打赏
  • 举报
回复
不改变mysql客户端不知道能不能解决?
woshihuzi 2008-05-01
  • 打赏
  • 举报
回复
没看到已经结帖了,估计没人来了,我再新开一个帖子问吧。
woshihuzi 2008-05-01
  • 打赏
  • 举报
回复
MySQL5用load data导入数据乱码问题和数据被篡改问题,请教版主和各位高手:


我安装的是mysql5.0.51a for win32,
操作系统是XP。
MySQL默认的字符编码为utf-8。


系统信息如下:
mysql> \s
--------------
mysql Ver 14.12 Distrib 5.0.51a, for Win32 (ia32)

Connection id: 21
Current database: cass
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.51a-community-nt MySQL Community Edition (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 2 hours 15 min 20 sec

Threads: 1 Questions: 79 Slow queries: 0 Opens: 21 Flush tables: 1 Open tables: 1

Queries per second avg: 0.010
--------------

字符编码信息如下:
mysql> show variables like '%set%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| auto_increment_offset | 1 |
| 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 | E:\cass\MySQL5\share\charsets\ |
+--------------------------+--------------------------------+
9 rows in set (0.00 sec)




操作过程:

1、在DOS提示符下连接MySQL,进入之后建立数据库和数据表,操作过程如下:
mysql> drop database if exists cass;
mysql> create database cass DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> use cass;
mysql> create table sys_radi(ID int not null, bsbh int not null, bschar varchar(20) not

null);



2、然后把如下内容保存在D:盘根目录的文件中:
----数据内容开始,不包含本行----
1 1 一
2 1 丨
3 1 丿
4 1 丶
5 1 乙
6 1 乛
7 1 
8 1 乚
9 2 二
10 2 十
----数据内容结束,不包含本行----
以上数据是在Windows中用记事本录入的,各列数据之间用tab键隔开,分别以UTF-8编码和ANSI编码保存

成两个文件:
d:\datautf8.txt
d:\datagb.txt



3、下面在mysql提示符下输入load data命令导入d:\datautf8.txt,然后检查结果:

mysql> load data local infile "d:\\datautf8.txt" into table sys_radi LINES TERMINATED by

'\r\n';
Query OK, 10 rows affected, 1 warning (0.02 sec)
Records: 10 Deleted: 0 Skipped: 0 Warnings: 0

mysql> select * from sys_radi;
+----+------+--------+
| ID | bsbh | bschar |
+----+------+--------+
| 0 | 1 | 涓€ |
| 2 | 1 | 涓? |
| 3 | 1 | 涓? |
| 4 | 1 | 涓? |
| 5 | 1 | 涔? |
| 6 | 1 | 涔? |
| 7 | 1 | 顮? |
| 8 | 1 | 涔? |
| 9 | 2 | 浜? |
| 10 | 2 | 鍗? |
+----+------+--------+
10 rows in set (0.00 sec)

这次导入第1条记录的ID不正确,而且所有记录的第3个字段都是乱码。



4、现在把所有记录删掉,重新用load data命令导入d:\datagb.txt,然后检查结果:

mysql> delete from sys_radi;
Query OK, 10 rows affected (0.02 sec)

mysql> load data local infile "d:\\datagb.txt" into table sys_radi LINES TERMINATED by

'\r\n';
Query OK, 10 rows affected, 5 warnings (0.03 sec)
Records: 10 Deleted: 0 Skipped: 0 Warnings: 0

mysql> select * from sys_radi;
+----+------+--------+
| ID | bsbh | bschar |
+----+------+--------+
| 1 | 1 | 一 |
| 2 | 1 | 丨 |
| 3 | 1 | 丿 |
| 4 | 1 | 丶 |
| 5 | 1 | |
| 6 | 1 | |
| 7 | 1 | |
| 8 | 1 | |
| 9 | 2 | |
| 10 | 2 | 十 |
+----+------+--------+
10 rows in set (0.00 sec)

这次导入,ID全对了,但是有一部分记录的第3个字段的数据丢了。


我究竟怎么样操作才能将数据正确导入?



5、JSP页面读取测试

忽略第4步,接第3步继续。
建立一个JSP页面,代码如下:
----页面代码开始,不包含本行----
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.lang.*, java.io.*, java.sql.*, java.util.* "%>
<html>
<body>
<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url="jdbc:mysql://localhost/cass";
Connection conn=DriverManager.getConnection(url,"root","dahuzi");
Statement stmt = conn.createStatement();
String sqlstr="select * from sys_radi";
ResultSet rs= stmt.executeQuery(sqlstr);

while(rs.next()){
out.println(rs.getString(1));
out.println("     ");
out.println(rs.getString(2));
out.println("     ");
out.println(rs.getString(3));
out.println("<br>");
}
out.println("<br>");
out.print("恭喜~! 打开数据库操作成功!");
rs.close();
stmt.close();
conn.close();
%>

</body>
</html>
----页面代码结束,不包含本行----
以UTF-8格式保存页面文件为test_utf8.jsp,然后在浏览器地址栏输入:
http://localhost:8080/test/test_utf8.jsp
发现页面显示如下:
----页面显示开始,不包含本行----
0 1 一
2 1 丨
3 1 丿
4 1 丶
5 1 乙
6 1 乛
7 1 
8 1 乚
9 2 二
10 2 十

恭喜~! 打开数据库操作成功!
----页面显示结束,不包含本行----
这样看来,MySQL客户端不能直接显示数据库中以UTF-8编码的字符串字段的汉字内容,所以会乱码。
在JSP页面中设置网页编码为UTF-8之后,就能正确显示数据库中以UTF-8编码的字符串字段的汉字内容了




现在的问题在于:为什么第一行数据的第一个字段,即数值1,为什么导入数据库之后变成0了呢?
pig2005 2007-10-09
  • 打赏
  • 举报
回复
学习学习
RocheFoo 2007-10-07
  • 打赏
  • 举报
回复
出现“???”一般都是字符集的问题。
acmilan1984 2007-10-07
  • 打赏
  • 举报
回复
MYSQL不知道。哈哈。不过MSSQL里面用 nvarchar(50)可以存放。不会有乱码。
懒得去死 2007-10-01
  • 打赏
  • 举报
回复
加精了。大家以后可以直接参考。
懒得去死 2007-09-25
  • 打赏
  • 举报
回复
alter database 你的数据库名 charset = gb2312;
懒得去死 2007-09-25
  • 打赏
  • 举报
回复
在MY.INI里添加:
[mysql]

default-character-set=gb2312
[mysqld]
default-character-set=gb2312

然后重新启动MYSQL服务。

进入数据库

alter database charset = gb2312;

还要记得在导入数据库的脚本的前面写上 set names gb2312;

这样就OK了。
sfl741852 2007-09-25
  • 打赏
  • 举报
回复
mysql> show variables like '%char%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| 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 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.00 sec)
懒得去死 2007-09-25
  • 打赏
  • 举报
回复
贴出你的show variables like '%char%';结果

56,681

社区成员

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

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