C#及sql2005 Latin1_General字符集下存储过程传中文乱码,如何解决

时间:2022-09-22 22:42:02
C#及sql2005 Latin1_General字符集下存储过程传中文乱码

ALTER PROCEDURE [dbo].[testpc]
(
@t nvarchar(40),
@b varchar(10)
)
AS
BEGIN
select * from test where a like '%'+@t+'%'
END

执行语句  exec testpc N'中国',''

有结果.
可是问题来了!我前台是用(c# 2010下)ObjectDataSource

我怎么写了.我想了些办法,怎么搞还是乱码

4 个解决方案

#1


别说更改字符集这种话,人家系统已经运行很久里,系统是英文环境.

#2


更换数据库的字符集

#3


更换数据库的字符集就不考虑了,我是在人家erp系统上二次扩展.用的是syteline产品考虑到license问题,部分功能作成web的站点形式.刚好遇到这个问题.插入什么的好说.存储过程传中文进去乱码还不能更改字符集还真没遇到过

#4


想法有点别扭.不过解决了,其实就是动态设置objectdatasource
      Parameter sorting = new Parameter("t", ObjectDataSource1.SelectParameters["t"].Type, this.TextBox1.Text.ToString());
        Parameter code = new Parameter("b", ObjectDataSource1.SelectParameters["b"].Type, this.TextBox2.Text.ToString());

        //清除原有的SelectParameter
        ObjectDataSource1.SelectParameters.Clear();

        //重新加入新的SelectParameter

        ObjectDataSource1.SelectParameters.Add(code);
        ObjectDataSource1.SelectParameters.Add(sorting);
还有就是别用ObjectDataSource的方式了,呵呵

#1


别说更改字符集这种话,人家系统已经运行很久里,系统是英文环境.

#2


更换数据库的字符集

#3


更换数据库的字符集就不考虑了,我是在人家erp系统上二次扩展.用的是syteline产品考虑到license问题,部分功能作成web的站点形式.刚好遇到这个问题.插入什么的好说.存储过程传中文进去乱码还不能更改字符集还真没遇到过

#4


想法有点别扭.不过解决了,其实就是动态设置objectdatasource
      Parameter sorting = new Parameter("t", ObjectDataSource1.SelectParameters["t"].Type, this.TextBox1.Text.ToString());
        Parameter code = new Parameter("b", ObjectDataSource1.SelectParameters["b"].Type, this.TextBox2.Text.ToString());

        //清除原有的SelectParameter
        ObjectDataSource1.SelectParameters.Clear();

        //重新加入新的SelectParameter

        ObjectDataSource1.SelectParameters.Add(code);
        ObjectDataSource1.SelectParameters.Add(sorting);
还有就是别用ObjectDataSource的方式了,呵呵