数据库字符集是“SQL_Latin1_General_CP1_CI_AS”; 
有一个字段Descrition,字段类型是char(10); 
插入中文内容时,显示为乱码。 我知道如果内容为常量时,前面加N如 N'内容' 可以插入成功,但是现在手头有一套程序是使用.NET程序的,SQL里面用的是变量,如 “insert table1(Description) values(@desc)”,程序里用的是SqlParameters赋值,这样插入的就是乱码了,请问怎么解决?

解决方案 »

  1.   

    更改一下数据库字符集 试试。登陆到SQL 的管理控制台--选择数据库--》右键属性--》选项--》排序规则改为:Chinese_PRC_CI_AS然后确定。重新启动。
      

  2.   

    更改字符集是不行的。我已经试过。我想知道怎样通过C#编码,实现类似SQL语句中 N'中文' 的效果。前面加N的效果。
      

  3.   

    char(10)
    改成varchar(10)试试呢
      

  4.   

    类型和sql都是不能改的,否则我就不会犯难了。
      

  5.   

    char(10)表示10个字节,如果你的内容不足10个字节,会用空格填充
    如果你的内容既有中文也有其他单字节字符的话
    可能会出现乱码
    你可以试着读取它的二进制值,然后用GB2312转换试试
      

  6.   

    sdfkfkd, sql里面可以进行您说的转换吗?我从.net里面讲String类型从Unicode转换成GB2312,然后又转换成ISO-8859-1,保存进去了。查询出来的话,可以直接从SQL里面进行逆向转换吗?
      

  7.   

    我的意思是你保存进去的时候需要转换一下,查出来也要转换出来
    因为C#默认的编码是UNICODE的
      

  8.   

    我明白你的意思,查询出来的时候C#转没有问题。但我做过ReportingService的报表,直接用SQL查的,显示为乱码。
      

  9.   

    那真的没什么办法了
    你可以试试将SqlParameters的数据类型设为NChar或者NVarchar试试