我想这是一个非常常见的问题,我自己找不到答案,这是一个很小的问题。
我的Oracle 10g Express数据库 WE8MSWIN1252 编码
select * from nls_database_parameters where parameter='NLS_CHARACTERSET'
当我尝试通过 OraOLEDB.Oracle 提供程序插入/读取unicode符号(.net字符串类型)时,我得到“ ???? ”符号。
Oracle管理网络工具显示相同的abracadabra符号“????”。
如何准确插入符号?
我应该更改数据库编码,OleDb提供程序,连接字符串,还是应该使用插入/选择选项进行操作?
答案 0 :(得分:2)
使用您当前的设置,您只能将这些字符存储在“国家”列类型中:NVARCHAR2
,NCHAR
,NCLOB
...请参阅NLS_NCHAR_CHARACTERSET
参数确切的编码。在常规列类型(VARCHAR2
,CHAR
,CLOB
...)中,您被限制在Windows-1252代码页中。
您会收到问号,因为Oracle永远不会抱怨错误的编码。相反,它会尝试将您的输入转换为目标编码,如果不可能,则会无声地破坏您的数据。
另一个选择是安装Oracle XE的Universal edition(您目前拥有西欧版)。
更新:另请参阅此相关问题:Difference between VARCHAR2(10 CHAR) and NVARCHAR2(10)