c#读取mysql中文乱码
时间: 2023-07-23 11:18:02 浏览: 117
在C#中读取mysql中文数据时出现乱码,可能是因为以下原因:
1. 数据库、表、字段的字符集不一致;
2. 数据库连接使用了不支持中文字符的编码;
3. 数据库中的中文数据本身就是乱码的。
为了解决这个问题,你可以尝试以下解决方法:
1. 确认数据库、表、字段的字符集一致,可以使用`show create table tablename;`查看;
2. 在连接字符串中添加`charset=utf8`以指定连接使用的字符集;
3. 在读取数据时,使用`Encoding.UTF8.GetString()`将乱码数据转换为正确的字符集。
以下是一个读取mysql中文数据的示例代码:
```
using System;
using MySql.Data.MySqlClient;
using System.Text;
class Program {
static void Main() {
string connStr = "server=localhost;user=root;database=test;port=3306;password=123456;charset=utf8";
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
string sql = "SELECT name FROM user WHERE id = 1";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) {
string name = rdr.GetString(0);
byte[] bytes = Encoding.Default.GetBytes(name);
string utf8Name = Encoding.UTF8.GetString(bytes);
Console.WriteLine(utf8Name);
}
rdr.Close();
conn.Close();
}
}
```
在上面的示例代码中,我们使用`Encoding.Default.GetBytes()`将读取到的数据转换为默认的字符集,然后再使用`Encoding.UTF8.GetString()`将其转换为UTF8字符集。
阅读全文