在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();
}
相关文章
- ASP.NET Core:使用EntityFrameworkCore操作MySql来丰富仓储模块
- asp.net使用Mysql乱码处理
- 用JDBC操作MySQL——大量数据库操作时使用批处理提速
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
- 如何使用asp.net webform处理AngularJs?
- [置顶] Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
- 如何使用批处理脚本在mysql5.5中输入密码?
- Ajax详解及其案例分析------如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表
- 在ASP.NET中使用一般处理程序生成验证码