询问者
vs2015 SQL 数据表 中文数据显示为??? 求解决

问题
-
通过vs2015建库,建表出现中文乱码
建表代码:
CREATE TABLE [dbo].[StudentInf] (
[SId] VARCHAR (12) NOT NULL,
[SName] VARCHAR (8) NOT NULL,
[Ssex] VARCHAR (2) DEFAULT ('男') NULL,
[SDate] DATE NULL,
[SGrade] VARCHAR (30) NULL,
PRIMARY KEY CLUSTERED ([SId] ASC),
CONSTRAINT [CHECK_SEX] CHECK ([Ssex]='男' OR [Ssex]='女'),
CONSTRAINT [CHECK_DATE] CHECK ([SDate]>'1950-1-1' AND [SDate]<'2200-1-1')
);建表后代码:
CREATE TABLE [dbo].[StudentInf] (
[SId] VARCHAR (12) NOT NULL,
[SName] VARCHAR (8) NOT NULL,
[Ssex] VARCHAR (2) DEFAULT ('?') NULL,
[SDate] DATE NULL,
[SGrade] VARCHAR (30) NULL,
PRIMARY KEY CLUSTERED ([SId] ASC),
CONSTRAINT [CHECK_SEX] CHECK ([Ssex] = '?'
OR [Ssex] = '?'),
CONSTRAINT [CHECK_DATE] CHECK ([SDate] > '1950-1-1'
AND [SDate] < '2200-1-1')
);添加一行数据
Insert into dbo.StudentInf
Values('201567667', '张三', '男', '1996-02-08', '2015级网工1班')表里数据为:
Sid Sname Ssex SDate SGrade
201567667 ?? ? 1996/2/8 2015???1?
NULL NULL NULL NULL NULL
由于没认证 所以只能打出来
问题:所有中文全部变成?? 求解
全部回复
-
恩,调整建表语句。注意,使用 NVARCHAR时,一个汉字要用4个字节,相比VARCHAR多了一倍,所以我调整了你的字段最大长度,新的交表语句如下:
CREATE TABLE [dbo].[StudentInf] (
[SId] VARCHAR (12) NOT NULL,
[SName] NVARCHAR (16) NOT NULL,
[Ssex] NVARCHAR (4) DEFAULT ('男') NULL,
[SDate] DATE NULL,
[SGrade] NVARCHAR (30) NULL,
PRIMARY KEY CLUSTERED ([SId] ASC),
CONSTRAINT [CHECK_SEX] CHECK ([Ssex]='男' OR [Ssex]='女'),
CONSTRAINT [CHECK_DATE] CHECK ([SDate]>'1950-1-1' AND [SDate]<'2200-1-1')
);chenl
-
用unicode最好加上N
CREATE TABLE [dbo].[StudentInf] (
[SId] VARCHAR (12) NOT NULL,
[SName] NVARCHAR (16) NOT NULL,
[Ssex] NVARCHAR (4) DEFAULT (N'男') NULL,
[SDate] DATE NULL,
[SGrade] NVARCHAR (30) NULL,
PRIMARY KEY CLUSTERED ([SId] ASC),
CONSTRAINT [CHECK_SEX] CHECK ([Ssex]=N'男' OR [Ssex]=N'女'),
CONSTRAINT [CHECK_DATE] CHECK ([SDate]>'1950-1-1' AND [SDate]<'2200-1-1')
);想不想时已是想,不如不想都不想。