日期:2014-05-18  浏览次数:20359 次

对于乱码问题有研究的兄弟进来一下
问题起因是:

我的网站系统有这样一个功能:
要通过查询用户帐号来查询用户信息。
当用户名为英文的时候的没有任何问题,但是当用户名为中文的时候,始终查不出任何信息。
于是我做了一下工作,发现了一些问题。

(1)我检查拉存储过程,并直接在数据库中以中文名验证,没有什么问题。
执行的语句如下
.....
exec   过程名称,   @用户名过程参数   =   N '用户名称 '--N代表unicode编码
.....
(2)于是我打开sql   server   profiler来监测。然后我访问网页,发现显示的调用语句如下:
.....
exec   过程名称,   @用户名过程参数   =   '??? ' --跟上面的差别在于少了一个N,导致产生乱码。
.....
(3)现在解决问题的关键就是如何能让数据库在直接来自于网站的查询时,能执行(1)中的语句。


------解决方案--------------------
多语言版本最好用unicode类型
------解决方案--------------------
存储过程中的@用户名过程参数是varchar还是nvarchar类型的?不是n的话改过来试试看
------解决方案--------------------
"exec 过程名称, @用户名过程参数 = N '??? ' "?