我有一个在Oracle中存储阿拉伯数字的奇怪问题。经过调查,我发现C#正在存储阿拉伯数字,1到10正确并将它们转换为'?'字符。我该如何解决这个问题?
代码
sb_title = "ھیلو۱۲۳";
query = "INSERT INTO MyTABLE(SB_TITLE)VALUES('"+sb_title+"');
OracleCommand myCommand = new OracleCommand(query, this.myConnection);
affectedRows = myCommand.ExecuteNonQuery();
经过彻底的调试后,我发现变量没有调整数据,但某处插入会弄乱数据。 SB_TITLE 的类型为NVARCHAR
Oracle连接字符串
sConnectionString = "User Id=xx;Password=xx;Data Source=XE";
Oracle版本
10g Express Edition
答案 0 :(得分:1)
实际上这很奇怪。 Oracle Driver将阿拉伯文本作为非Unicode文本处理,但对于数字,它实际上需要unicode值。在我的连接字符串中,我没有提到 Unicode = True 。我改变了所做的一切:
sConnectionString = "User Id=xx;Password=xx;Data Source=XE";
到
sConnectionString = "User Id=xx;Password=xx;Data Source=XE;Unicode=True";
它像魅力一样工作