SQL脚本导入数据库后,数据出现乱码..郁闷一天了..

lanye_purple 2006-12-07 10:22:50
我现在是在做一个打包程序..打包数据库是用sql脚本的方法做的.打包好,在服务器上安装后,数据库里面的中文数据全是乱码..
网上找了很多资料,字符型改成了是nvarchar,nchar,ntext.但还是不能行..我知道这肯定是数据库编码的问题..但还是不知道具体如何解决..
感谢各位高手了..

附:打包程序的环境:简体XP+中文版SQL 服务器:繁体win2000+英文版SQL
...全文
574 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
memoriccell 2006-12-07
可以用SQLServer的全球化解决方式,你的insert语句中文字段前面全部加上N就可以了
INSERT INTO [UDS_Role] ( [Role_ID] , [Role_Name] , [Role_Description] ) VALUES ( 54 , N'財務主管' , N'財務主管' )
INSERT INTO [UDS_Role] ( [Role_ID] , [Role_Name] , [Role_Description] ) VALUES ( 55 , N'財務員工' , N'財務員工' )
INSERT INTO [UDS_Role] ( [Role_ID] , [Role_Name] , [Role_Description] ) VALUES ( 56 , N'ADM' , N'系統管理員' )
像上面这样加上以后数据库就不会出现中文乱码了
回复
yangsm 2006-12-07
我估计是安装时是英文版,有一次遇到过,不支持中文~
回复
fish_yht 2006-12-07
去掉中文排序
用系统默认的排序规则
然后用nchar或者nvarchar试试看
回复
lanye_purple 2006-12-07
恩..包含..

我刚在服务器上面另一个数据库(这个数据库没有显示乱码)进行了对比..在字符型字段的排序规则为:<database default> 显示乱码的排序规则为:Chinese_PRC_CI_AS
回复
fish_yht 2006-12-07
检查服务器master库中syslanguages表是否包含繁体中文
回复
lanye_purple 2006-12-07
在我自己的机子,进行安装.没有出现乱码.这肯定是系统环境的问题.具体有谁告知怎么弄?感谢了..
回复
lanye_purple 2006-12-07
就是在数据库里面生成.sql脚本文件,然后按李洪根老师的方法进行数据库部署.

下面是生成的一段.sql脚本,打包完后,在服务器上安装,INSERT INTO进入数据库的中文字就变成乱码了...
CREATE TABLE [dbo].[UDS_Role] (
[Role_ID] [int] IDENTITY (1, 1) NOT NULL ,
[Role_Name] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Role_Description] [ntext] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET IDENTITY_INSERT [UDS_Role] ON

INSERT INTO [UDS_Role] ( [Role_ID] , [Role_Name] , [Role_Description] ) VALUES ( 54 , '財務主管' , '財務主管' )
INSERT INTO [UDS_Role] ( [Role_ID] , [Role_Name] , [Role_Description] ) VALUES ( 55 , '財務員工' , '財務員工' )
INSERT INTO [UDS_Role] ( [Role_ID] , [Role_Name] , [Role_Description] ) VALUES ( 56 , 'ADM' , '系統管理員' )

SET IDENTITY_INSERT [UDS_Role] OFF
GO
回复
tmc1703 2006-12-07
2楼的好像是排序规则啊,可以改变数据的编码?
回复
fish_yht 2006-12-07
创建表时,在中文字段后面带上
COLLATE Chinese_PRC_CI_AS
就不会出现乱码了
回复
tmc1703 2006-12-07
数据是怎么迁移过去的啊?讲清楚点撒。
回复
lanye_purple 2006-12-07
以上的方法都试过了..不行.

总结:这其实是一个很简单的问题..是我想的太复杂了..就像在一个简体系统上,用记事本写上一些中文字,然后复制到繁体系统上面去.打开出现乱码一样..
解决方法:我现在只能在繁体系统下面打包程序了.
回复
发动态
发帖子
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
社区公告
暂无公告