mysql 中文乱码

解决MySQL数据库中采用charset=latin1时C#读取乱码问题
本文探讨了在MySQL数据库使用latin1字符集时,C#读取数据出现乱码的问题,并提供了两种解决方案:一种是在连接字符串中指定Charset=latin1;另一种是通过SQL语句将latin1转换为UTF8编码。同时讨论了字节序问题及参考资源。

mysql数据库中采用charset=latin1,C#读取时乱码

第一种方式:

1、连接字符串指定Charset=latin1
2、MySqlCommand先执行set names 'latin1',MySqlCommand cmd = new MySqlCommand("set names 'latin1'", connection);
cmd .ExecuteNonQuery();
3、读取时Encoding.UTF8.GetString(Encoding.GetEncoding("latin1").GetBytes(str));//把latin1字符读取bytes数组,然后采用UTF8编码读出来。

第二种方式:

mysql中转化latin1->UTF8

set names latin1;
create TEMPORARY table tmp(roleid int,rolename varchar(100));
insert into tmp
select roleid,name from table1 
where account=in_account;
ALTER TABLE tmp MODIFY COLUMN rolename VARBINARY(50);
ALTER TABLE tmp MODIFY COLUMN rolename varchar(50) character set utf8;
set names utf8;
select roleid,rolename from tmp;
drop table tmp;

参考:

http://www.cnblogs.com/jishu/archive/2012/01/11/2318891.html

http://note.tc.edu.tw/399.html

http://www.cnblogs.com/fdyang/archive/2013/04/20/3032171.html

http://www.oschina.net/question/565065_86411

字节序问题

http://blog.youkuaiyun.com/yeh201111/article/details/8188646

http://blog.okbase.net/haobao/archive/25.html

转载于:https://www.cnblogs.com/cn-chenhao/p/5069373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值