Oracle数据库中的UTF-8和ISO-8859-15

时间:2017-02-20 15:53:39

标签: java database oracle character-encoding h2

我有:

1)Oracle数据库1,其中

SELECT * FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET'

给出

NLS_CHARACTERSET                                                 
WE8ISO8859P15                                                             

NLS_NCHAR_CHARACTERSET                                           
AL16UTF16    

2)Oracle数据库2,其中

NLS_CHARACTERSET                                                 
AL32UTF8                                                        

NLS_NCHAR_CHARACTERSET                                           
AL16UTF16       

3)H2数据库3

因此,我使用sqlloader将一些CLOB从DB1复制到DB2。然后我使用PreparedStatement将它们从DB2复制到DB3。

然后我读它们就像

private String parseCLOB(Object t) {
    if (t instanceof oracle.sql.CLOB|| t instanceof org.h2.jdbc.JdbcClob) {
        InputStream i = t.getAsciiStream();
        StringWriter w = new StringWriter();
        IOUtils.copy(i, w, "UTF-8");
        t = w.toString();
    }
    return t
} 

它已经破坏了DB2的符号,适用于DB3。但是,如果我替换" ISO-8859-15",它适用于DB2并且适用于DB3。

如何让两个数据库都正常工作?

0 个答案:

没有答案