java - 无法将语言特定字符保留到 xml 数据类型的数据库列中

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

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

我有一个函数,它将包含语言字符的映射作为其参数之一。该函数将 map 转换为 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),我在数据库表中看到的条目类似于“????”替换我的例子中的所有俄语字符,其余一切保持不变。

最佳答案

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

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

关于java - 无法将语言特定字符保留到 xml 数据类型的数据库列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084157/

相关文章:

java - 在 Spring 中使用 ResponseBody 注释返回一个不工作的 Json

java - 为什么我编译时得到 "cannot find symbol"?

Java TCP 客户端重复连接导致 EMFILE 错误

.net - 如何获得 C# 和 SQL2k8 AES 加密之间的兼容性?

java - 静态 HTML 页面的 Spring View 解析器

java - Thymeleaf:用 <br> 替换换行符

java - 使用自定义类作为 JAX-WS 参数 : How to write JAXB adapter for type safe enum?

java - 为嵌入式 Tomcat 设置 'relaxedQueryChars'

sql - 从具有复合主键的表中选择

sql - 为什么我的左连接不返回空值?