解决方案 »

  1.   

    1、保存汉字的字段要用NVARCHAR、NCHAR、NTEXT等,插入的时候要用N'汉字'
    2、排序规则也试试,很多会因这个引起。数据库名称 右击->属性-> 选项->排序规则->选择为Chinese_PRC_CI_AS
      

  2.   

    hi,ky_min,非常感谢您的回复。
    1、插入的时候用N'汉字'  --> 问题是原先的代码没有使用这样的写法,并没有出现乱码。只是在更换了数据库服务器和web服务器之后才出现的这个乱码问题。是否是数据库或者IIS的什么地方需要设置呢?
    2、排序规则选择为Chinese_PRC_CI_AS --> SQL2000的排序规则是Latin1_General_CI_AI,还原到SQL2012后也是Latin1_General_CI_AI,为什么SQL2000的中文不是乱码呢?
      

  3.   

    1、如果不知道是不是页面编码的问题,你可以尝试修改 网页的charset 改为utf8 或 gb2312试试。
    你也可以统一在 IIS上设置,参考 如何在iis中设置站点的编码格式。2、都是中文版吗? 
      

  4.   

    ky_min,非常感谢您耐心的解答,我还有一些疑问:
    1、在网页中修改编码格式为gb2312,utf-8,繁体中文等,中文字体还是乱码
    2、网页的编码格式大部分都是繁体中文big5的,数据库字段类型也是varchar和char,没有nvarchar和nchar类型,我试着把变成乱码的字段类型从varchar改成了nvarchar,乱码的确没有了,可是我很奇怪为何在SQL2000中这样的字段类型都能支持中文且网页上能正确显示中文,为何还原到SQL2012后就变成乱码了呢?如果要一个一个改变字段类型,那也有些太麻烦了,而且也担心将varchar改为nvarchar类型后会不会出现其他问题呢?还有就是目前sql2012服务器只是给客人测试,等测试没问题了,还要将最新的sql2000数据库还原到2012,到时又要全部更新一遍字段类型吗?
      

  5.   

    SQL2012不清楚,因为我的电脑上装的是2005~~
    如果你的SQL2012是英文版和SQL2000是中文版的,之前遇到过一位贴友,他的是因为中文版到英文版的问题~
    而如果你的SQL2012也是中文版,我想只能说微软越来越向标准靠拢吧~~SQL各个各个版本之间有时差异很大~~那位贴友的批量更新类型的脚本,我贴出来你参考下,有什么问题贴上来
    while 1=1
    begin
        declare @sql varchar(max)
        SELECT TOP (1) @sql='alter table '+b.name+' alter column '+a.name+' nvarchar('+cast(a.length as varchar(10))+')' 
        from syscolumns a,sys.tables b 
        where a.id=b.object_id and a.xtype=167
     
    IF @@ROWCOUNT<>0
        exec(@sql)
     else
        break
    end
      

  6.   


    Dear ky_min,非常感谢您的耐心回复,我的问题已经解决了。问题出在Web Server的区域语言选项设定上,修改这个设定的Location为United States后,网页中的中文可以正常显示了。
      

  7.   


    Dear ky_min,非常感谢您的耐心回复,我的问题已经解决了。问题出在Web Server的区域语言选项设定上,修改这个设定的Location为United States后,网页中的中文可以正常显示了。原来还有这个地方会影响啊,感谢告知~~
    记下来~~