MS SQL插入中文出现乱码????的解决

今早在做一个menu的时候,发现插入的中文在数据库中显示成了??之类的,而相关的英文却是没有问题的。写的很简单的语句如下:

insert into menuparent
(
ParentClassName,
ParentClassUrl
)
values
('首页','../index.aspx')
go


结果则是:

?? ../index.aspx

这可怎行呢?中文不能出来的呀[em03]
搜索是我们最好的老师,找了一通,这个方法可行喔

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。




[本日志由 admin 于 2008-05-10 11:05 PM 编辑]
上一篇: 在岁月中沧桑
下一篇: 爱情,不是一味地付出
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 4 | 引用: 311 | 查看次数: 49845
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 30 字 | UBB代码 关闭 | [img]标签 关闭