参考:
今早在做一个menu的时候,发现插入的中文在数据库中显示成了??之类的,而相关的英文却是没有问题的。写的很简单的语句如下:insert into menuparent
(
ParentClassName,
ParentClassUrl
)
values
('首页','../index.aspx')
go
结果则是:?? ../index.aspx这可怎行呢?中文不能出来的呀 
搜索是我们最好的老师,找了一通,这个方法可行喔insert into menuparent
(
ParentClassName,
ParentClassUrl
)
values
(N'首页','../index.aspx')
go
看到没有,在首页前面多了一个N的字母原因可能是:
1.我设置的ParentClassName这个字段的数据类型是 nchar(30)
2.我用的是英文版的SQL  版本是:Sql2005 Express En版
解决方法:
1.英文默认是ascii,英文版的數據庫存中文必須用到Unicode。字符型采用Nchar,Nvarchar,ntext.2.插入數據的時候,要加N另附在CSDN看到的一点东西:
例如,若要使用代码页 850 将 pubs 数据库中的 authors2 表大容量复制到 Authors.txt 数据文件,请在命令提示符下执行:bcp pubs..authors2 out authors.txt -c -C850 -Sservername -Usa -Ppassword另外,使用 CODEPAGE 子句,BULK INSERT 语句也可以使用由用户指定的代码页读取数据文件。例如,若要使用代码页 850 将 Authors.txt 数据文件大容量复制到 pubs 数据库的 authors2 表中,可从 SQL 查询分析器这样的查询工具中执行:BULK INSERT pubs..authors2 FROM 'c:\authors.txt'
WITH (
   CODEPAGE = 850
)下面是代码页的有效值。http://community.csdn.net/Expert/topic/4951/4951516.xml?temp=.3520624代码页值 描述 
ACP 将数据导入 SQL Server 实例时,数据类型为 char、varchar 或 text 的列从 ANSI/Windows 代码页 (ISO 1252) 转换为 SQL Server 代码页,从 SQL Server 实例导出数据时相反。 
OEM(默认值) 将数据导入 SQL Server 实例时,数据类型为 char、varchar 或 text 的列从系统 OEM 代码页转换为 SQL Server 代码页,从 SQL Server 实例导出数据时相反。 
RAW 这是最快的选项,因为不会发生从一个代码页到另一个代码页的转换。  
<值> 特定的代码页号码,例如 850。 

解决方案 »

  1.   

    是什么数据库 ?SQL ? oracle?
      

  2.   


    已经是乱码了,我要读取,不是插入
    修改字段类型varchar为nvarchar,插入中文没问题
    不修改插入就是全部????
      

  3.   


    打开数据库中文已是乱码,字符类型是varchar,插入中文是"????"
    改成nvarchar,插入中文OK
    现在要查询数据出来做报表
      

  4.   

    数据库的排序规则修改不了
    在繁体版的SQL 200新建一个数据库,排序规则也是繁体的
    再将数据导进去,基本上完成但 麻烦