有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法将特定于语言的字符持久保存到xml数据类型的数据库列中

我需要在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),我在数据库表中看到的条目类似于“??”在我的例子中,替换掉所有的俄文字符,其余的都保持不变


共 (1) 个答案

  1. # 1 楼答案

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

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