Forum Stats

  • 3,816,053 Users
  • 2,259,134 Discussions



We have two versions of the same database, one that uses a Latin characterset, the other AL32UTF8.

Our client uses Microsoft's ADO stack, and we see a difference in payload size when retrieving data through the Oracle OLE DB provider.

My assumption is that this is due to the documented behavior of the OLE DB Provider where:

OraOLEDB works in two modes, Unicode mode and non-Unicode mode. When the client character set is not a superset of the server character set, OraOLEDB automatically enables the Unicode mode. In this mode, OraOLEDB stores the data in its cache in the UCS2 encoding scheme. The user should ensure that the database's character set is UTF8 in order to prevent any data loss.

If the client character set is a superset of the server's, the provider operates in the non-Unicode mode. This mode provides slightly better performance as it does not have to deal with larger character buffers required by the UCS2 encoding.

Anyone know a way to work around this ? I am looking for a consistent sizing of single byte characters in both environments - my observation that the UTF16 representation doubles my payload.

Any insight appreciated - thanks.
This discussion has been closed.