Арабские данные конвертируются в ???? когда java-программа запрашивает полезную нагрузку xml из таблицы Oracle, используя оператор Select

Арабские данные конвертируются в ???? когда java-программа запрашивает полезную нагрузку xml из таблицы Oracle, используя оператор Select

Я написал программу JDBC для запроса полезной нагрузки типа xml из таблицы Oracle с помощью оператора Select. Несколько элементов XML в полезной нагрузке содержат, например, имя, фамилию и т. д., содержащие арабские символы. Когда я запускаю свою программу, выберите запрос, возвращающий полезную нагрузку xml, но элементы, имеющие арабские символы, преобразуются в ????. Я не уверен, почему это происходит именно так. есть ли у кого-нибудь решение этой проблемы?

Заранее спасибо.


person Venkat    schedule 09.09.2019    source источник
comment
Привет, Венкат, добро пожаловать в Stack Overflow. Не могли бы вы показать, что вы пробовали, некоторый код или предварительный просмотр того, чего вы пытаетесь достичь? Это поможет ответить на ваш вопрос :).   -  person ksugiarto    schedule 09.09.2019
comment
Я предполагаю, что вы используете драйвер Oracle JDBC. Вы также добавили orai18n.jar в свой CLASSPATH?   -  person Abra    schedule 09.09.2019


Ответы (1)


Я столкнулся с этой проблемой с java и mysql на eclipse, решение было. Из eclipse щелкните прямо на своем проекте, выберите свойства и выберите utf-8, как на этой фотографии.

введите здесь описание изображения

Потом из базы выбрал базовую кодировку и таблицы utf-8.

Наконец, все запросы к базе данных должны быть закодированы в utf-8 следующим образом.

String url = "jdbc:mysql://host/database?useUnicode=true&characterEncoding=utf8";
person Wassim Al Ahmad    schedule 09.09.2019
comment
Привет Вассим, опция Eclipse работает, как вы упомянули. Спасибо. - person Venkat; 10.09.2019
comment
Привет Вассим, как вы упомянули URL-адрес базы данных MySQL с userUnicode и Charcterencode, есть ли способ использовать для базы данных Oracle? Мой URL: String url = jdbc:oracle:thin:@hostname:xxxx:schemaname?useUnicode=true&characterEncoding=utf8; Ошибка: java.sql.SQLException: прослушиватель отказался от соединения со следующей ошибкой: ORA-12505, TNS: прослушиватель в настоящее время не знает SID, указанного в дескрипторе подключения. - person Venkat; 10.09.2019
comment
привет Венкат Какую версию Oracle вы используете Например, 10g, 12g, а также Oracle Express Edition - person Wassim Al Ahmad; 10.09.2019
comment
Уважаемый г-н vekat Базы данных Oracle и MySQL основаны на SQL Все, что вам нужно, находится здесь, в контактных инструкциях по кодированию Oracle docs.oracle.com/cd/B19306_01/server.102/b14225/ - person Wassim Al Ahmad; 10.09.2019
comment
Вы также можете просмотреть арабскую версию Oracle по этой ссылке mycodee.wordpress.com/2011/04/08/ - person Wassim Al Ahmad; 10.09.2019
comment
Чтобы увидеть текущую кодировку в базе данных по умолчанию, используется utf-16. Выполните этот запрос: SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET'; Я желаю вам успеха - person Wassim Al Ahmad; 10.09.2019