【问题标题】:Unable to persist language specific characters into the database column of xml datatype无法将语言特定字符持久保存到 xml 数据类型的数据库列中
【发布时间】:2013-06-13 09:55:41
【问题描述】:

我需要将特定语言的字符保存在 xml 数据类型的列中,因为 XML 是我在检索它时想要的格式。就在坚持之前,我在 XML 中看到了俄语字符,但是在我坚持使用 JPA 之后实际存储的内容类似于“??????”。需要注意的是,要求是将列数据类型保持为 xml。我尝试了我在网上能找到的任何东西,但没有成功。如果有人可以请帮助我。

我有一个函数,它将包含语言字符的地图作为其参数之一。该函数将地图转换为 XML 格式并以字符串形式返回。然后将其持久化到数据库中:

entityManager.persist(X)

,其中 X 是一个实体对象,其 XML 字符串映射到它的属性之一。

private String toXML(Map<String, String> map, String root) {
    StringBuilder xmlSB = new StringBuilder(OPEN_NODE);
    // Logic to convert map to XML
    return xmlSB.toString();
}

在 entityManager.persist(X) 之后,我在数据库表中看到的条目类似于“????”在我的情况下替换所有俄语字符,其余所有内容保持不变。

【问题讨论】:

标签: java sql-server-2008 spring-mvc jpa


【解决方案1】:

将列排序规则修改为 UTF-8 并在您的 jdbc url 中添加字符串 characterEncoding=UTF-8。这个逻辑曾经用于mysql。

但是要在mssql中存储特殊字符,需要将列的数据类型改为nvarchar()而不是varchar()。

【讨论】:

  • 能否请您帮我将 SQL Server 2008 的列排序规则修改为 UTF-8?我想,在这里我们没有任何选项可以更改 2005/2008 年的排序规则。最终,我们将不得不求助于更改数据类型,这是不可接受的。
  • SQL Server 通过 nvarchar 数据类型使用 UCS-2
猜你喜欢
  • 2022-11-24
  • 2015-12-07
  • 2017-06-10
  • 2016-09-06
  • 2021-09-19
  • 2019-10-05
  • 2020-05-17
  • 2021-06-21
  • 2015-05-12
相关资源
最近更新 更多