Специальные символы в Oracle NCLOB

Я имею дело с базой данных Oracle 10g, и предоставляется следующая хранимая процедура:

 procedure get_synopsis (
   p_id in  my_schema.products.p_id%type,
   p_synopses out sys_refcursor);  -- cursor of - synopsis_type, synopsis_text

В моем Java-коде я подготавливаю оператор следующим образом:

String idForDb = fromIdUrlToIdDb(prodIdUrl); 
statement.registerOutParameter(1, OracleTypes.VARCHAR);
statement.setString(1, idForDb );
statement.registerOutParameter(2, OracleTypes.CURSOR);

И я получаю данные, которые мне нужны таким образом:

String defaultSyn, nonDefSyn;

String returnedId = ((OracleCallableStatement)stm).getString(1);
try ( ResultSet synopses = ((OracleCallableStatement)stm).getCursor(2) ){ // p_synopses - cursor of: synopsis_type, synopsis_text

    while( synopses!=null && synopses.next() ){

        String type = synopses.getString(1) != null ? synopses.getString(1).toUpperCase() : null;

        if( type != null ){

            StringBuilder sb = new StringBuilder();
            BufferedReader br = new BufferedReader( synopses.getClob(2).getCharacterStream() );
            String line;

            while ((line = br.readLine()) != null) {
               sb.append(line).append("\n");
            }

            if("DEFAULT".equals(type)){
                defaultSyn = sb.toString();
            }else if("NONDEFAULT".equals(type)){
                nonDefSyn = sb.toString();
            }

            // ...
        }
    }
}

Поле SYNOPSIS_TEXT являетсяNCLOB но я использую String для его содержимого, так как я точно знаю, что он не будет длиннее, чем MAX_INTEGER. "Nнабор символов "используетсяUnicode.

В JSON, сгенерированном из этой строки, я вижу правильно обработанные символы, такие какзапятая, перенос, тире, одинарная кавычка, точка, скобка, двоеточие и т. д. но у меня есть проблемы со специальными символами, такими какоставленная одинарная кавычка / U + 2018 (‘’), который отображается неправильно. Также я могу видеть в текстесимволы новой строки (\ n) ицитаты (\ ").

Правильно ли возвращать текст в таком формате для потребителей, или я должен обрабатывать его лучше / иначе?

Ответы на вопрос(0)

Ваш ответ на вопрос