保存在数据库中时,法语字符转换为特殊字符

时间:2016-03-15 17:24:16

标签: oracle hibernate jpa oracle11g

在DB中保存文本“février.xlsx”在通过J2EE应用程序保存时将保存为“février.xlsx”。

数据库版本:Oracle Database 11g企业版11.2.0.4.0版

NLS_CHARACTERSET - AL32UTF8

NLS_NCHAR_CHARACTERSET - AL16UTF16

public DocumentModel save(DocumentModel model) {
                  DocumentModel docModel = null;
                  try {
                         LOGGER.info("Name before saving into DB :"+model.getDocumentFileName());
                         docModel = entityManager.merge(model);
                  } catch (Exception exp) {
                         LOGGER.error("Exception occured");
                            }
                  return docModel;
           }

表中的列数据类型:VARCHAR2(256 CHAR)

保存到DB之前的名称:février.xlsx

名称保存的数据库:février.xlsx

我尝试使用insert语句手动插入数据库。它插入正确但从应用程序插入时不正确。

1 个答案:

答案 0 :(得分:0)

困难总是要确定数据库中是否存储了错误的值,或者数据库中是否存储了正确的值。显示检索到的值时,总是有可能发生错误。

Oracle具有函数dump()。

select dump(column),column from table;

这将显示字节值,因为它们实际存储在数据库中。使用此选项,您可以根据要存储的字符和数据库字符集来检查这些值是否正确。

http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions055.htm#SQLRF00635