Java 如何以英语以外的其他语言存储文本?

Java 如何以英语以外的其他语言存储文本?,java,sql,sql-server,hibernate,Java,Sql,Sql Server,Hibernate,在我的项目中,我想在数据库中存储泰米尔文字。因此,我用数据类型nvarchar(50)创建了该列 Hibernate将nvarchar转换为可序列化。如何设置此列的值 有人能帮助解决这个问题吗?我想您必须通过扩展映射到数据类型的SQLServerDialogue来编写自定义方言 public class CustomSQLServerDialect extends SQLServerDialect { public CustomSQLServerDialect() { super();

在我的项目中,我想在数据库中存储泰米尔文字。因此,我用数据类型nvarchar(50)创建了该列

Hibernate将nvarchar转换为可序列化。如何设置此列的值


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

我想您必须通过扩展映射到数据类型的SQLServerDialogue来编写自定义方言

public class CustomSQLServerDialect extends SQLServerDialect {

public CustomSQLServerDialect() {
    super();

    // Use Unicode Characters
    registerColumnType(Types.VARCHAR, "nvarchar($l)");        
  }
}

Madhesh,对于在数据库中的任何字段中包含其他语言字符,您不需要担心类型本身,但需要检查字段或表甚至数据库本身正在使用的编码(排序规则)

最常见的是utf8\u general\u ci:

我相信您可以通过用于访问和修改数据库的工具更改这些排序规则。以下是有关字符编码和排序规则的更详细答案:


然而,泰米尔语似乎是一个特例,如果UTF-8编码还不够的话,有一种语言可能会对您有进一步的帮助。

我想您必须通过扩展映射到nchar、nvarchar或ntext等数据类型的
sqlserverdialent
来编写自定义方言。类似于
registerColumnType(Types.VARCHAR,255,“nvarchar($l)”)
@Amough,谢谢,它部分解决了我的问题。它允许在db中添加泰米尔字体,但在检索时显示?????像这样,您将
hibernate.connection.CharSet
hibernate.connection.characterEncoding
属性设置为UTF8,并将
hibernate.connection.useUnicode
设置为true。@Madhesh,使用上述三个hibernate属性,尝试将DB连接字符串设置为
jdbc:mysql://localhost/MyDB?useUnicode=true&characterEncoding=utf-8