繁体   English   中英

Spring 和 PostgreSQL 之间的编码错误

[英]Wrong encoding between Spring and PostgreSQL

I have a Spring Boot (version 1.3) Web application, all in UTF-8, and a PostgreSQL server with server encoding UTF-8 and client encoding WIN1252.

问题是,当我在数据库中手动保存带有特殊字符的内容时,编码是正确的,但是从 JDBC 开始,字符串保存错误。

同样,当我保存了一个包含特殊字符的字符串并进行 SELECT 查询手动读取时,编码是正确的,但从 JDBC 开始,字符串被错误读取。

暂时不要选择删除数据库并重新创建,所以我一直在尝试很多结果不佳的事情。 有什么解决办法吗?

PD:我已将所有这些属性放在我的 application.properties 文件中:

spring.datasource.sql-script-encoding = UTF-8
spring.http.encoding.charset = UTF-8
spring.http.encoding.enabled = true
spring.http.encoding.force = true
spring.mandatory-file-encoding = UTF-8
server.tomcat.uri-encoding = UTF-8
spring.messages.encoding = UTF-8

在定义数据源URL的位置,尝试将?characterEncoding = UTF-8添加到URL的末尾

我遇到了同样的问题。 我正在使用Spring Boot 1.5.9和postgres 9.6,带有插入的data.sql。 data.sql上的编码是UTF-8,但在应用程序启动后,在DB中是特殊符号而不是俄文字母。

spring.datasource.sql-script-encoding= UTF-8

application.properties中的此属性有所帮助。

所有负责DB的属性:

spring.datasource.jndi-name=java:/PostgresDS
spring.jpa.properties.hibernate.default_schema=my_scheme_name
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql = false
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.datasource.continue-on-error=true
spring.datasource.sql-script-encoding= UTF-8

就我而言,问题出在 JVM 方面。

我添加后:

-Dfile.encoding=UTF8

作为 VM 选项 - 问题已解决

暂无
暂无

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

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