【问题标题】:Can Oracle encoding be set in connection-string?可以在连接字符串中设置 Oracle 编码吗?
【发布时间】:2010-10-12 10:39:16
【问题描述】:

我的测试数据库使用 AL32UTF8 编码,但生产数据库使用 WE8ISO8859P1 编码。我的应用程序是用 .NET 编写的,我使用默认的 System.Data.OracleClient.OracleConnection 类来建立连接。

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

在测试数据库上一切正常,显然将 .NET 的内部字符串格式转换为 AL32UTF8 工作正常。但是在生产中我只是不工作。 .NET 内部字符串表示(即 utf16)无法以某种方式转换为 WE8ISO8859P1。

我的问题: 您可以在连接字符串中指定数据库的编码吗?还是有其他方法告诉驱动程序 (System.Data.OracleClient.OracleConnection) 数据库需要特定的编码?

【问题讨论】:

  • 请不要给出如下答案:convert(c1,'WE8ISO8859P1'),这不是我想要的!
  • 另外:目前还不能转换生产数据库。
  • 只要您不使用 WE8ISO8859P1 中无法表示的字符,转换就会自动进行。如果您有这样的字符,则无论如何都无法将其存储在数据库中。为什么你认为它不起作用?你有错误吗?错误信息是什么?请提供更多详细信息。
  • 没有错误信息,但是 € €符号无法正确存储。感谢 Codo,这指向了我:forums.oracle.com/forums/thread.jspa?threadID=391482

标签: oracle encoding connection-string


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2012-01-02
    • 1970-01-01
    相关资源
    最近更新 更多