asp.net利用Mysql乱码处理 -
时间:2010-09-03 来源:缘分星空
在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();
}
of the seasreal coach handbagsmiley cyrus movie picturescruise from fort lauderdale to bahamaspacific princess itineraryantique style jewelrywhen does fall start 2009silver evening bag offersmonograms cake toppershautelook coupondior homme shirtmarriott beach place resortsuzuki leather jacketsdiscount on designer handbagsgtb golf travel bagspaint watercolor portraitmusic boat 2008 cruisesound beach grillthomson cruise and stay holidayscow king hidemicrobe lift spring summerhow to sew a leather bagluggage totechristian halloween crafts kidsbeach front condos for saletrendy winter coatsauto graphicsbeach vacationsembroidered beach towelwindstar embroidery designscheap dooney pursesfrench river cruisewholesale golf bagscheap christmas ornamentscattle brand tattoospassport requirements for caribbean cruisesgoof troop tv showwholesale couchfree leather carving patternswomens fashion veststravelpro luggage reviewhomemade leather couch cleanerpolka dot wall letterssilk bathrobetool box setsflorida cruise ports mapfendi spy pursecustom leather craft tool bagcanvas printingmirage tv