Java Spring和PostgreSQL之间的编码错误

Java Spring和PostgreSQL之间的编码错误,java,spring,postgresql,encoding,utf-8,Java,Spring,Postgresql,Encoding,Utf 8,我有一个SpringBoot(1.3版)Web应用程序,全部采用UTF-8,还有一个PostgreSQL服务器,服务器编码为UTF-8,客户端编码为WIN1252 问题是,当我在DB中手动保存带有特殊字符的内容时,编码是正确的,但从JDBC中保存的字符串是错误的 同样,当我用特殊字符保存一个字符串,并进行SELECT查询以手动读取时,编码是正确的,但从JDBC读取的字符串是错误的 现在,放弃数据库并重新创建不是一个选择,所以我一直在尝试很多效果不佳的事情。有什么解决办法吗 PD:我已将所有这些属

我有一个SpringBoot(1.3版)Web应用程序,全部采用UTF-8,还有一个PostgreSQL服务器,服务器编码为UTF-8,客户端编码为WIN1252

问题是,当我在DB中手动保存带有特殊字符的内容时,编码是正确的,但从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的末尾

我遇到了相同的问题。我使用的是SpringBoot1.5.9和Postgres9.6,data.sql和insert。在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

我认为你的财产命名不正确。尝试
spring.datasource.sqlScriptEncoding=UTF-8
而不是
spring.datasource.sql-script-encoding=UTF-8
我正在使用spring Boot 1.3,我没有说对不起。我认为,该属性的调用正如您在SpringBoot1.2中所说的那样。对不起,你说得对。它对我来说是一种开箱即用的默认启动设置。我通过HTTP发布了欧元,它正确地保存在数据库中,并在响应中返回欧元。您正在尝试使用哪种unicode字符?我刚刚测试了它是否保存了'€'字符,并且它已被编码为'ch'字符。您是否使用与我相同的服务器和客户端编码?我添加了它,但问题仍然存在:(