我的测试数据库具有 AL32UTF8 编码,但生产数据库具有 WE8ISO8859P1 编码。我的应用程序是用 .NET 编写的,我使用默认的 System.Data.OracleClient.OracleConnection 类来建立连接。
当我想要插入一些带有非 ASCII 符号的字符串时,我创建一个 IDbCommand 并添加 IDbDataParameter 对象。
在测试数据库上一切运行良好,显然将 .NET 的内部字符串格式转换为 AL32UTF8 运行良好。然而在生产上我就是不工作。 .NET 内部字符串表示形式(utf16)无法以某种方式转换为 WE8ISO8859P1。
我的问题:
您可以在连接字符串中指定数据库的编码吗?或者是否有另一种方法来告诉驱动程序(System.Data.OracleClient.OracleConnection
)数据库需要特定的编码?
最佳答案
只要您不使用无法在 WE8ISO8859P1 中表示的字符,转换就会自动发生。如果你有这样的字符,无论如何你都无法将其存储在数据库中。
如果您尝试存储欧元符号 (€),您将不走运。它不是 WE8ISO8859P1 的一部分。
关于oracle - Oracle编码可以在连接字符串中设置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3913746/