C# mysql中文乱码
时间:2011-12-02
来源:互联网
采用的是 MySQL 5.5.15,一路设置都是默认的
现有表
create table person(
id char(20) not null,
name char(50) not null,
primary key(id)
);
使用 MySql.Data.dll 操作数据库
public int ExecuteNonQuery(string sql)
{
MySqlCommand command = new MySqlCommand(sql, m_conn);
return command.ExecuteNonQuery();
}
public DataTable ExecuteQuery(string sql)
{
DataTable dt = null;
MySqlDataAdapter mda = null;
try
{
mda = new MySqlDataAdapter(sql, m_conn);
dt = new DataTable();
mda.Fill(dt);
}
catch { }
return dt;
}
现在有 sql 语句 insert into person vaules ('12345678', '张三丰')
当我在 mysql command line client 输入并执行完毕后,在mysql command line client下查询 select * from person 的结果能够显示中文
但是我如果在程序中调用 ExecuteNonQuery(sql) ,在mysql command line client下查询 select * from person 的结果,名字一列是乱码的
还有包含中文,我在程序调用 DataTable ExecuteQuery(string sql) 得到的结果也是乱码的
mysql> select * from customer;
+----------+--------+
| id | name |
+----------+--------+
| 12345678 | 张三丰 |
+----------+--------+
1 row in set (0.00 sec)
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.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
请教一下高手们应该怎么解决这个问题
现有表
create table person(
id char(20) not null,
name char(50) not null,
primary key(id)
);
使用 MySql.Data.dll 操作数据库
public int ExecuteNonQuery(string sql)
{
MySqlCommand command = new MySqlCommand(sql, m_conn);
return command.ExecuteNonQuery();
}
public DataTable ExecuteQuery(string sql)
{
DataTable dt = null;
MySqlDataAdapter mda = null;
try
{
mda = new MySqlDataAdapter(sql, m_conn);
dt = new DataTable();
mda.Fill(dt);
}
catch { }
return dt;
}
现在有 sql 语句 insert into person vaules ('12345678', '张三丰')
当我在 mysql command line client 输入并执行完毕后,在mysql command line client下查询 select * from person 的结果能够显示中文
但是我如果在程序中调用 ExecuteNonQuery(sql) ,在mysql command line client下查询 select * from person 的结果,名字一列是乱码的
还有包含中文,我在程序调用 DataTable ExecuteQuery(string sql) 得到的结果也是乱码的
mysql> select * from customer;
+----------+--------+
| id | name |
+----------+--------+
| 12345678 | 张三丰 |
+----------+--------+
1 row in set (0.00 sec)
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.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
请教一下高手们应该怎么解决这个问题
作者: humanpally 发布时间: 2011-12-02
在C#查询前先执行一下SQL语句 set names 'gbk'; 试一下。如果没问题,则可以在连接字符串中设置连接的字符集。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
作者: ACMAIN_CHM 发布时间: 2011-12-02
http://dev.mysql.com/doc/refman/5.1/zh/charset.html
作者: yq510457 发布时间: 2011-12-02
执行语句前 set names gbk试试
作者: rucypli 发布时间: 2011-12-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28