如何存储和访问国家符号?

时间:2011-07-26 11:32:33

标签: .net oracle encoding oledb

我想这是一个非常常见的问题,我自己找不到答案,这是一个很小的问题。

我的Oracle 10g Express数据库 WE8MSWIN1252 编码

select * from nls_database_parameters where parameter='NLS_CHARACTERSET'

当我尝试通过 OraOLEDB.Oracle 提供程序插入/读取unicode符号(.net字符串类型)时,我得到“ ???? ”符号。

Oracle管理网络工具显示相同的abracadabra符号“????”。

如何准确插入符号?

我应该更改数据库编码,OleDb提供程序,连接字符串,还是应该使用插入/选择选项进行操作?

1 个答案:

答案 0 :(得分:2)

使用您当前的设置,您只能将这些字符存储在“国家”列类型中:NVARCHAR2NCHARNCLOB ...请参阅NLS_NCHAR_CHARACTERSET参数确切的编码。在常规列类型(VARCHAR2CHARCLOB ...)中,您被限制在Windows-1252代码页中。

您会收到问号,因为Oracle永远不会抱怨错误的编码。相反,它会尝试将您的输入转换为目标编码,如果不可能,则会无声地破坏您的数据。

另一个选择是安装Oracle XE的Universal edition(您目前拥有西欧版)。

更新:另请参阅此相关问题:Difference between VARCHAR2(10 CHAR) and NVARCHAR2(10)