2010-10-12 114 views
2

我的测试数据库具有AL32UTF8编码,但生产数据库具有WE8ISO8859P1编码。我的应用程序是在.NET中编写的,我使用默认的System.Data.OracleClient.OracleConnection类来建立连接。Oracle编码可以设置为连接字符串吗?

我创建一个IDbCommand,并且当我想插入一些带有非ASCII符号的字符串时,我添加了IDbDataParameter对象。

在测试数据库一切正常,明显地转换.NET的内部字符串格式为AL32UTF8工作正常。但是在制作中我只是不起作用。 .NET内部字符串表示(即utf16)无法以某种方式转换为WE8ISO8859P1。我的问题: 你能指定连接字符串中的数据库的编码吗?还是有另一种方法告诉驱动程序(System.Data.OracleClient.OracleConnection)数据库需要特定的编码?

+0

请不要给出像这样的答案:convert(c1,'WE8ISO8859P1'),这不是我想要的! – Jaap 2010-10-12 10:41:36

+0

另外:转换生产数据库目前不是一个选项。 – Jaap 2010-10-12 10:41:56

+0

只要您不使用无法在WE8ISO8859P1中表示的字符,转换就会自动发生。如果你有这样的字符,无论如何你都不能将它存储在数据库中。你为什么不行?你有错误吗?什么是错误消息?请给我们更多的细节。 – Codo 2010-10-12 11:02:50

回答

3

只要您不使用无法在WE8ISO8859P1中表示的字符,转换就会自动发生。如果你有这样的字符,无论如何你都不能将它存储在数据库中。

如果您尝试存储欧元符号(€),那么您的运气不好。它不是WE8ISO8859P1的一部分。