使用NHibernate将汉字保存到oracle中的问题

时间:2009-07-07 04:50:17

标签: c# oracle nhibernate

我正在尝试使用Nhibernate通过C#将中文字符保存到oracle DB中,并且保存的字符总是以一些垃圾字符结束。

我做了以下事情:

  1. 该字段的Hbm映射是 声明为AnsiString类型 列类型为sql-type =“nvarchar”。 还试过String和nvarchar2 太
  2. 数据库列数据类型是 NVARCHAR2。
  3. 注册表,环境 变量和数据库字符集 NLS_LANG设置为UTF8。
  4. 我能够通过sql developer读取中文字符输入。但是当我尝试检索它们(屏幕上的字符显示正确)并尝试将它们保存回数据库而不进行任何更改时,保存的数据变为“ ”。

    任何人都知道我错过了什么?

1 个答案:

答案 0 :(得分:1)

我会检查.NET端的数据是什么。不要相信控制台上显示的内容 - 查看UTF-16代码点。

请参阅我的debugging unicode article了解一般方法。

我似乎记得在Oracle之前遇到一些问题,之前只能通过设置数据库编码然后重建数据库来修复 - 我无法将其应用于现有数据库。然而,细节处于昏暗和遥远的过去......