繁体   English   中英

Hibernate + JPA + jTDS + SQL Server = Unicode问题

[英]Hibernate + JPA + jTDS + SQL Server = Unicode Problems

我维护着一个作为Servlet运行的软件,可以将MySQL,Oracle或SQL Server作为数据库后端使用-取决于客户要使用的软件。

一切都可以与MySQLOracle完美配合,并且SQL Server也可以很好地配合,除非我无法将Unicode序列插入/更新到数据库中

我可以在这样的unicode序列的SQL Server Management Studio中手动插入

INSERT INTO mytable (msg) VALUES (N'Modern Standard Hindi (मानक हिन्दी), is a standardised and Sanskritised register of the Hindustani language.')

这些数据可以在我的软件中正确输出,因此可以验证数据库和Web前端都可以正常处理unicode。

这是我的连接字符串

jdbc:jtds:sqlserver://<server ip>:1433/MyDb

就像我说的那样, OracleMySQL使用此设置可以完美地工作。 SQL Server有什么不同?

注意 :我也尝试了Microsoft提供的官方JDBC驱动程序,结果完全相同。

如果有什么不同,我正在使用JPA存储库进行数据库交互。 整个Web应用程序也被设置为SpringMVC应用程序。

编辑:我还尝试将useUnicode=true;characterEncoding=UTF-8到连接字符串的末尾,结果相同

您可能需要在连接字符串中指定正在使用Unicode以及正在使用的编码。 也许是这样的吗?

jdbc:jtds:sqlserver://<server_ip>:1433;databaseName=MyDb;useUnicode=true;characterEncoding=UTF-8

所以有一件事我没有回答我最初的问题。

我在过滤器链中设置了使用Spring Security和CharacterEncodingFilter设置的系统,以在所有请求和响应中强制使用UTF-8,但是我在Web安全性初始化程序的afterSpringSecurityChain部分中进行了设置。

我将过滤器移至beforeSpringSecurityChain方法并开始使用-一切UTF-8均可与所有数据库供应商完美配合。

我最终没有在连接字符串中添加任何参数,也没有添加任何参数。 实际上,这只是我更改的过滤器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM