java - MSSQL中的编码问题

标签 java sql-server jdbc encoding utf-8

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

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

STUDENTNAME column is of type NVARCHAR.

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

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

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

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

问题:我正在使用 JDBC 执行此插入查询,那么我是否需要如上所示使用 N 处理所有值。或者驱动程序级别有其他一些设置可以解决此问题?

最佳答案

我在 Microsoft article 上找到了这个,

Prefix Unicode character string constants with the letter N. Without the N prefix, the string is converted to the default code page of the database. This default code page may not recognize certain characters.

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

请关注this link帖子:

Difference between varchar and nvarchar?

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

关于java - MSSQL中的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49626999/

相关文章:

java - 如何在 Windows(非 Java)应用程序中使用 Java 时区 ID?

java - iOS 上的 Libgdx 距离场字体支持

php - 如何自动将数据从一台SQL服务器导出到Mysql表

sql - 使用 Pivot 转换 SQL 表的形状

java - 如何使用 JDBC 检索存储过程的信息?

java - 读取 Blob 文件而不将其保存为文件

java - JDBC显示所有数据

java - MVC 数据库图像显示 spring

java - Java中的Jooq自定义绑定(bind)注册

sql - 减去两个子查询