I do a call to an oracle stored procedure using JDBCTemplate which has an in/out parameter of STRUCT. One of the fields on this struct is a VARCHAR which gets updated depending on the stored procedure logic. However when this is returned from the call it just contains three question marks - '???'. This is possibly the work of the Riddler but it sounds more like a char encoding issue.
This worked fine until we switched databases to a database that had a character encoding of WE8ISO8859P15 (ISO8859) this was retrieved by doing:
SELECT NLS_CHARACTERSET FROM NLS_DATABASE_PARAMETERS
The previously working character set was WE8MSWIN1252 (MSWIN-1252) which works fine. So I'm guessing it's down to a char set issue although I'm slightly wary as it always returns just 3 question marks regardless of how much text should be returned.
As far as I understand the underlying JDBC driver (jdbc:oracle:thin) does all the character encoding automatically and converts the database char set to UTF-16 (Java char encoding) however it appears this is not happening. I'm using the StoredProcedure class (part of Spring) to call the StoredProcedure.
I've also tried adding the orai18n.jar to the classpath but with no success. However it seems really unusual considering ISO-8859 is a pretty standard charset so I might be going down the wrong path.
Any help would be greatly appreciated.