Как мне сохранить юникоды через java в oracle

#java #oracle #unicode

#java #Oracle #Юникод

Вопрос:

Предполагая, что следующие три строки составляют слово на китайском языке, как мне сохранить все это вместе в одном поле (как одно слово) в oracle

  String code="u6B32 ";
 String code1="u8ECE";
 String code2="u4F7F";
  

Спасибо

Ответ №1:

Вы можете просто установить строку в качестве параметра PreparedStatement JDBC. Для сохранения Юникода вам нужно будет попросить вашего администратора базы данных убедиться, что экземпляр Oracle создан с использованием набора символов Юникода, такого как UTF-8 (или, альтернативно, что тип NVARCHAR использует набор символов Юникода).

Предлагаемые настройки Oracle:

  • NLS_CHARACTERSET: AL32UTF8
  • NLS_LENGTH_SEMANTICS: СИМВОЛ

Вы можете проверить параметры NLS, выполнив следующий запрос:

 select * from v$nls_parameters
  

Поскольку вы будете сохранять китайские символы, я предлагаю вам ознакомиться с дополнительными символами Юникода и их реализацией в Oracle DB. Каждый набор символов Юникода хранит дополнительные символы по-разному, и это может существенно повлиять на размер вашей базы данных на диске. Кроме того, семантика длины может быть более сложной, потому что больше не существует соотношения 1: 1 между количеством кодовых точек и количеством символов.

Дальнейшее чтение:

Ответ №2:

Этого должно быть достаточно

  String word = "u6B32u8ECEu4F7F";

 PreparedStatement pstmt = pstmt = conn.prepareStatement("INSERT INTO MY_TABLE(WORDS) VALUES(?)");
 pstmt.setString(1, word);

 pstmt.execute();
 pstmt.close();