Я выполняю вызов хранимой процедуры оракула, используя JDBCTemplate, у которого есть входной / выходной параметр STRUCT.Одним из полей в этой структуре является VARCHAR, который обновляется в зависимости от логики хранимой процедуры.Однако, когда это возвращается из вызова, оно просто содержит три знака вопроса - «???».Возможно, это работа Riddler, но это больше похоже на проблему с кодировкой символов.
Это работало нормально, пока мы не переключили базы данных на базу данных, в которой была кодировка символов WE8ISO8859P15 (ISO8859), которая была получена с помощью:
SELECT NLS_CHARACTERSET FROM NLS_DATABASE_PARAMETERS
Ранее рабочим набором символов был WE8MSWIN1252 (MSWIN-1252), который отлично работает.Так что я предполагаю, что это связано с проблемой набора символов, хотя я немного осторожен, поскольку он всегда возвращает только 3 вопросительных знака независимо от того, сколько текста должно быть возвращено.
Насколько я понимаю основной драйвер JDBC(jdbc: oracle: thin) выполняет всю кодировку символов автоматически и преобразует набор символов базы данных в UTF-16 (кодирование символов Java), однако, похоже, этого не происходит.Я использую класс StoredProcedure (часть Spring) для вызова StoredProcedure.
Я также попытался добавить orai18n.jar в classpath, но безуспешно.Однако это кажется действительно необычным, учитывая, что ISO-8859 - довольно стандартная кодировка, поэтому я могу пойти по неверному пути.
Любая помощь будет принята с благодарностью.