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 楼答案
将列排序规则修改为UTF-8,并在jdbc url中添加字符串characterEncoding=UTF-8。这个逻辑曾经用于mysql
但要在mssql中存储特殊字符,需要将列的数据类型更改为nvarchar(),而不是varchar()