Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Неявное преобразование getClobVal [UTF8 -> WINDOWS-1251]
|
|||
|---|---|---|---|
|
#18+
Интересное неявное преобразование обнаружил. В этом запросе, я попытался воспроизвести жизненный цикл одной XML. Она, путешествуя по разным местам кода, несколько раз преобразовывается, и, в конечном итоге, оказывается непригодной для работы. Oracle 12c - 12.2.0.1.0 64 bit Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. В результате, получаем: в полях x1 - x3 Код: xml 1. в полях x4,x5 ( Интересно, почему?) Код: xml 1. Возможно, дело в этом: Код: plsql 1. 2. На машинах, на которых SYS_CONTEXT ('USERENV', 'LANGUAGE') выдает AMERICAN_AMERICA.AL32UTF8 - не происходит подмена кодировки. Но, может, я и ошибаюсь насчет причин, и дело в чем-то другом? В любом случае, мне не кажется такое преобразование нормальным поведением. Кстати, у меня x4 превращается в WINDOWS-1251 только в PL/SQL Developer ( видимо, настройки сессии отличаются от настройки в других программах) А вот x5 - превращается в WINDOWS-1251 - во всех трех программах Oracle SQL Developer / DBForge / PL/SQL Developer Интересно так же то, что в x3,x4,x5 оказывается перезаписана структура XML - заменена конструкция Код: xml 1. на один самозакрытый тег Код: xml 1. . Видимо, это говорит о том, что оракловый движек не просто работает с байтами тела XML, а полностью парсит, разбирает и собирает заново XML. И, в какой-то момент, он "забывает" какой XMLROOT нужно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2021, 14:35 |
|
||
|
Неявное преобразование getClobVal [UTF8 -> WINDOWS-1251]
|
|||
|---|---|---|---|
|
#18+
ART-CODE, CLOB - это текстовая строка, ты же сохраняя строку в базе, хочешь, чтобы другие пользователи с другим nls_lang могли ее прочитать? Вот оракл и старается за тебя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2021, 14:41 |
|
||
|
Неявное преобразование getClobVal [UTF8 -> WINDOWS-1251]
|
|||
|---|---|---|---|
|
#18+
Sayan Malakshinov, Спасибо, ясно. Хуже всего то, что в этой XML вложена через CDATA другая XML, которая тоже в UTF8. Просле таких преобразований, вложенная - становится поврежденной. Внешняя XML "старается быть" в 1251, а внутренняя "хочет оставаться" в UTF8. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2021, 15:25 |
|
||
|
Неявное преобразование getClobVal [UTF8 -> WINDOWS-1251]
|
|||
|---|---|---|---|
|
#18+
ART-CODE Sayan Malakshinov, Спасибо, ясно. Хуже всего то, что в этой XML вложена через CDATA другая XML, которая тоже в UTF8. Просле таких преобразований, вложенная - становится поврежденной. Внешняя XML "старается быть" в 1251, а внутренняя "хочет оставаться" в UTF8. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2021, 15:48 |
|
||
|
Неявное преобразование getClobVal [UTF8 -> WINDOWS-1251]
|
|||
|---|---|---|---|
|
#18+
Sayan Malakshinov не надо работать с xmltype через getclobval/getblobval. Есть поля CLOB и BLOB в таблицах, в которые эту XML нужно сохранить. Как получить эти типы из xmltype без использования getclobval/getblobval - на эту тему еще придется "изобретать велосипед". Менять "чужую" архитектуру, и делать в таблицах поля с типом данных xmltype, нет возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2021, 16:48 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=40063945&tid=1880276]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 125ms |

| 0 / 0 |
