我在前台页面调用数据库的存储过程时需要传参数,当传的参数是中文时,则数据库的SP接受到的字符变成乱码,比如前台页面传进的是"中国",而数据库端看到的是"中?".在该sp中我把参数的类型无论设成varchar 还是 nvarchar都不行.asp.net怎样以unicode的编码形式把参数传进去呢? 或者数据库端需如何设置呢? 数据库是sqlserver 2000.

解决方案 »

  1.   

    检查参数有没有设置成NVarchar,NChar
    SqlParameter("@name",SqlDbType.NVarchar)
      

  2.   

    看看参数传入的第一步
    从aspx的postback得到参数
    这个配置在web.config里面
        <globalization 
                requestEncoding="utf-8" 
                responseEncoding="utf-8" 
       />
    配置节设定了传入传出参数的编码方式,另外如果你自己设定了html/aspx页的编码方式,也会影响到request/response的编码方式
    第二步才是用得到的参数和数据库交互,基本上你做的是正确的,建议使用nvarcharps:如果用的是request.questring而不是request.Form得到的参数最好使用server.urlencode和server.urldecode编码解码