#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();