MSSQL中的编码问题

时间:2018-04-03 09:46:09

标签: java sql-server jdbc encoding utf-8

我试图在MSSQL中执行下面提到的查询。

insert into STUDENT (STUDENT_NAME, STUDENT_MARKS, SID) values ('索引', 10, 2)
  

STUDENTNAME列的类型为NVARCHAR。

执行上述查询后。插入的学生姓名是: ??

据我所知,上述问题与编码有关,因此我通过添加N修改了上述查询,如下所示:

insert into STUDENT (STUDENT_NAME, STUDENT_MARKS, SID) values (N'索引', 10, 2)

上述查询正在按预期运行,并且正在成功插入中文字符。

问题:我使用JDBC执行此插入查询,所以我需要使用N继续执行所有值,如上所示。或者在驱动程序级别还有其他一些设置来解决这个问题?

1 个答案:

答案 0 :(得分:2)

我在Microsoft article上找到了这个,

  

使用字母N前缀Unicode字符串常量。无   N前缀,该字符串被转换为默认代码页   数据库。此默认代码页可能无法识别某些字符。

N表示字符串是Unicode(N实际上代表国家语言字符集),这意味着您传递的是NCHAR,NVARCHAR或NTEXT值,而不是CHAR,VARCHAR或TEXT。

请关注this link帖子:

Difference between varchar and nvarchar?

除了您的问题,如果您使用INSERT查询在表格中插入记录,那么您必须在每个字符串值之前添加N