asp.net使用Mysql乱码处理 |
在asp.net与mysql数据库打交道的时候,因为配置的问题,会遇到自己写的 步骤在读取数据库中数据的时候,英文,数字 可以 畸形通过,然而中文就 无奈通过,以登录为例( 步骤略),当输入英文消费者名的时候 可以 畸形登录,但输入中午的时候 步骤就会报错,解决 步骤如下: 1,在 mysql数据库安装目录下找到my.ini文件,把default-character-set的值 批改为 default-character-set=gb2312( 批改两处), 保留,再一次启动 。 2,找到asp.net文件的web.config文件,在</httpModules>标签的后面增加<globalization requestEncoding="gb2312" responseEncoding="gb2312"/> 3,假如衔接数据库的字符串写在web.config里面,则在衔接字符串里面增加charset=gb2312(如:<add key="test" value="server=localhost;database=dbtest;uid=root;pwd=root;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(); } |