Java 使用unicode的DB2数据库

Java 使用unicode的DB2数据库,java,unicode,jdbc,db2,database,Java,Unicode,Jdbc,Db2,Database,我对应该存储unicode字符的DB2数据库有一个问题。连接是使用JDBC建立的 如果要在数据库中插入unicode字符串,我必须做什么 INSERT INTO my_table(id, string_field) VALUES(1, N'my unicode string'); 或 我不知道是否必须使用N前缀。对于大多数数据库来说,它在使用时工作得非常好,但我对DB2不是很确定。我还有一个问题,我手头没有一个DB2数据库,可以用来测试这些语句:-( 非常感谢!我从来没有在DB2上下文中听说过

我对应该存储unicode字符的DB2数据库有一个问题。连接是使用JDBC建立的

如果要在数据库中插入unicode字符串,我必须做什么

INSERT INTO my_table(id, string_field) VALUES(1, N'my unicode string');

我不知道是否必须使用N前缀。对于大多数数据库来说,它在使用时工作得非常好,但我对DB2不是很确定。我还有一个问题,我手头没有一个DB2数据库,可以用来测试这些语句:-(


非常感谢!

我从来没有在DB2上下文中听说过这一点。我了解到这是MS SQL Server特有的。在DB2和其他所有体面的RDBMS中,您只需要确保数据库使用
UTF-8
字符集。您通常在
CREATE
语句中指定它。以下是DB2变体:

CREATE DATABASE my_db USING CODESET UTF-8;
在DB2端应该是这样。您不需要为此更改标准SQL语句。您也不需要担心Java,因为它在内部已经使用Unicode。

上的文档(从DB2 9.7开始)说明了以下内容:

图形字符串常量指定由一系列双字节字符组成的变长图形字符串,这些字符以单字节撇号(')开头和结尾,前面是单个字节G或N。撇号之间的字符必须表示偶数个字节,图形字符串的长度不得超过16336字节


将unicode字符串常量封装在N“”中可以通过用于DB2 DB的JDBC应用程序工作。

FYI:Express-C版可能对您的测试有用。有趣的是,我不知道这一点,但闻起来像是一种“变通方法”用于在未配置为使用unicode的数据库/表中插入unicode数据。我宁愿将db配置为使用unicode,而不是弄乱SQL语句。老实说,我不知道这将如何通过JDBC驱动程序和隐式UTF-16的Java字符串表达式来实现。这种支持看起来更倾向于使用unicode使用八位字节字符的de。这不是我的第一选择,但我也不会急于下结论——海报可能需要处理一些遗留模式。我对这句话有一个担忧:当使用这种符号时,我只能使用UCS-2,对吗?UTF-8编码字符串呢?我为什么要使用poste这个问题是,我正在开发一个系统,它应该支持不同类型的数据库。目前,我试图找出如果每个字符串文本都以N作为前缀,它是否会损害任何数据库。
CREATE DATABASE my_db USING CODESET UTF-8;