2011-09-27 98 views
0

我使用NHibernate的以下配置来连接到Oracle。在其中一个类中,我存储了一个unicode字符串,如日本语(日本)。该列的数据字段是NVARCHAR2(),但是,当检索数据时,该值已损坏,显示??? (??)。沿线的某处我正在失去我的编码,但是在哪里丢失。有任何想法吗?使用NHibernate和Oracle的Unicode字符串

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
<session-factory> 
    <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property> 
    <property name="connection.connection_string_name">Oracle</property> 
    <property name="show_sql">true</property> 
    <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property> 
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> 
    <property name="cache.use_second_level_cache">true</property> 
    <property name="adonet.batch_size">30</property> 
    <property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property> 
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 
</session-factory> 

+1

当您检索信息时,如何识别信息丢失?检查它的最可靠方法是查看字节数组是否与所选编码匹配(我假定使用UTF-8),以排除字体问题。 – jishi

+0

选择PL/SQL和Linqpad都会显示损坏的字符串。我还没有完成逐字节比较,但我确实假设(也许不正确)这些工具中的一个可以正常工作。 –

+0

潜在的相关问题:http://stackoverflow.com/questions/1192281/how-to-save-unicode-data-to-oracle/1192290#1192290 –

回答

1

NHibernate的剂量不会使用NVARCHAR2。 如果你想NHibernate使用NVarchar2比你必须编写自己的数据库方言。

+0

你能详细点吗? –