CloudFoundry 中的编码问题



我将我的Web应用程序上传到CloudFoundry,但我的母语被破坏了,如下所示。

在此处输入图像描述

我已经检查了数据库是否损坏了数据。

DB使用CloudFoundry作为服务提供的ClearDB MySQL数据库。

我运行了以下查询。

SHOW VARIABLES LIKE 'c%'
character_set_client        utf8
character_set_connection    utf8
character_set_database      utf8
character_set_filesystem    binary
character_set_results       utf8
character_set_server        latin1
character_set_system        utf8
character_sets_dir          /usr/share/mysql/charsets/
collation_connection        utf8_general_ci
collation_database          utf8_general_ci
collation_server            latin1_swedish_ci
completion_type             NO_CHAIN
concurrent_insert           AUTO
connect_timeout             10

我怀疑"拉丁语"的部分是在猜测,但我不知道如何改变它。

有人可以帮助解决这个问题吗?

谢谢。

根据特定的 ClearDB 数据库服务器,在某些情况下,数据库的字符集为 latin1(早于 8.1 的 MySQL 的默认配置)。

我们已经联系了 ClearDB 支持团队,但他们不愿意更改此配置,因为它可能会影响托管在同一服务器上的其他客户,并且他们为我们提供了一个更昂贵的解决方案:拥有我们自己的专用服务器。

好的一点是,字符集可以按连接基础进行配置,因此我们决定覆盖默认的数据源,该数据源由Cloud Foundry使用的Java构建包自动配置。

为了覆盖数据源,我们需要做几件事:

  1. 为Spring Cloud连接器添加Maven依赖项,
  2. 关闭数据源 Bean 的默认自动配置,
  3. 使用环境提供的连接参数配置数据源 Bean。

要添加 Spring Cloud 连接器,请将此依赖项添加到您的 pom .xml:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cloud-connectors</artifactId>
</dependency>

要关闭自动配置,请确保在 Spring 引导云配置文件中创建云 bean:

@Configuration
@Profile("cloud")
public class DataSourceConfiguration {
@Bean
public Cloud cloud() {
return new CloudFactory().getCloud();
}
}

最后,要使用托管在VCAP_SERVICES环境变量中的数据库连接参数,您可以通过以下方式在 application-cloud.yml 中引用它们:

spring.datasource.url: ${cloud.services.mysql.connection.jdbcurl}&characterEncoding=utf-8
spring.datasource.username: ${cloud.services.mysql.connection.username}
spring.datasource.password: ${cloud.services.mysql.connection.password}
spring.datasource.testOnBorrow: true

在自定义数据源配置时,重要的是要注意以characterEncoding=utf-8结尾的 spring.datasource.url:这是将连接配置为使用 UTF-8 编码的地方。

此外,在我们的例子中,mysql是 PCF 服务实例的名称,在您的环境中可能有所不同。

最后,要了解有关使用 Spring Boot 绑定到数据服务的更多信息,您可以阅读这篇优秀的文章:https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundry。

相关内容

  • 没有找到相关文章

最新更新