asp.net使用mysql乱码_asp.net使用Mysql乱码处理

在asp.net与mysql数据库打交道的时候,由于配置的问题,会遇到自己写的方法在读取数据库中数据的时候,英文,数字可以正常通过,但是中文就无法通过,以登录为例(方法略),当输入英文用户名的时候可以正常登录,但输入中午的时候方法就会报错,解决方法如下:

1,在 mysql数据库安装目录下找到my.ini文件,把default-character-set的值修改为 default-character-set=gb2312(修改两处),保存,重新启动。

2,找到asp.net文件的web.config文件,在标签的后面添 加

3,如果连接数据库的字符串写在web.config里面,则在连接字符串里面添加charset=gb2312(如:)

4,重新编译。

有时还会遇到数据库里面显示的数据是中午,但读取到页面之后成了乱码,而且在写存储工程的时候,有中文出现,编译不会通过,我的解决方法是,我的解决方法是,把中文都转化为十六进制,然后读出来。代码如下

Mysql:

drop procedure if exists proc_hm_holiday_top5;

create procedure proc_hm_holiday_top5()

begin

select  *,(select userinfo_name from hm_userinfo where userinfo_id=holiday_uid) as username,

case

when holiday_type=1 and holiday_typeTwo=1 then _utf8 0xE8AFB7E581872FE79785E5818720

when holiday_type=1 and holiday_typeTwo=2 then _utf8 0xE8AFB7E581872FE4BA8BE5818720

when holiday_type=1 and holiday_typeTwo=3 then _utf8 0xE8AFB7E581872FE4B8A7E5818720

when holiday_type=1 and holiday_typeTwo=4 then _utf8 0xE8AFB7E581872FE5A99AE5818720

when holiday_type=1 and holiday_typeTwo=5 then _utf8 0xE8AFB7E581872FE4BAA7E5818720

when holiday_type=1 and holiday_typeTwo=6 then _utf8 0xE8AFB7E581872FE5B9B4E5818720

when holiday_type=1 and holiday_typeTwo=7 then _utf8 0xE8AFB7E581872FE585B6E4BB9620

when holiday_type=2 then _utf8 0xE58AA0E78FAD

when holiday_type=3 then _utf8 0xE587BAE5B7AE

when holiday_type=4 then _utf8 0xE7A7BBE4BC91

end

as holiday_class from hm_holiday where 1=1 order by holiday_addTime desc limit 5;

end;

C#代码(将中文转化为十六进制)

public  string GetHexFromChs(string s)

{

if ((s.Length % 2) != 0)

{

s += " ";//空格

}

System.Text.Encoding chs = System.Text.Encoding.GetEncoding("utf-8");

byte[] bytes = chs.GetBytes(s);

string str = "";

for (int i = 0; i < bytes.Length; i++)

{

str += string.Format("{0:X}", bytes[i]);

}

return str;

}

private void button1_Click(object sender, EventArgs e)

{

string shuru = textBox1.Text.Trim().ToString();

string str = GetHexFromChs(shuru);

textBox2.Text = str.Trim().Trim();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值