Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Преобразование кодировки UTF-8 в AL16UTF8  [new]
defecator
Member

Откуда:
Сообщений: 39394
Привет всем гуру.

В базу в поле BLOB залил текст HTML страницы.
Кодировка страницы:
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

кодировка БД:
NLS_CHARACTERSET = CL8MSWIN1251
NLS_NCHAR_CHARACTERSET = AL16UTF16

собственно, чего такое подставить в Convert, чтобы на выходе увидеть русский текст и получить профит ))
Convert(Parser.FParsed.FTitle, '???', '???')
28 ноя 14, 10:05    [16917387]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
defecator
Member

Откуда:
Сообщений: 39394
Сорри, темку несколько неправильно обозвал (((
28 ноя 14, 10:05    [16917394]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
Если поле действительно BLOB, а на странице действительно UTF-8, то на utf8-консоль достаточно просто выдать поток байт из поля.
28 ноя 14, 10:08    [16917411]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
defecator
Member

Откуда:
Сообщений: 39394
Basil A. Sidorov
Если поле действительно BLOB, а на странице действительно UTF-8, то на utf8-консоль достаточно просто выдать поток байт из поля.


Поле действительно Blob, страница действительно UTF-8.
Я парсю HTML из Блоба, чтобы вытащить оттуда <Title>название</title>, чтобы это самое "название" положить в поле таблицы.
Так вот требуется преобразовать заголовок страницы в нечто человеко-читаемое ))

Я думаю, что консоль тут не при делах)
28 ноя 14, 10:16    [16917460]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
По логике (которая может быть ошибочной) установка charset-а соединения в UTF-8 должна решить вашу проблему.
28 ноя 14, 10:37    [16917611]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
vladimir74
Member

Откуда: Отсюда
Сообщений: 3613
defecator,

можно через CONVERT
CONVERT(my_ZeileAnsi, 'UTF8','AL16UTF16)

можно при конвертации BLOB в CLOB

     l_csid := NLS_CHARSET_ID (UPPER('AL16UTF16'));
     DBMS_LOB.CONVERTTOCLOB(dest_lob     => out_Clob
                          , src_blob     => in_blob
                          , amount       => dbms_lob.lobmaxsize
                          , dest_offset  => 1
                          , src_offset   => 1
                          , blob_csid    => l_csid
                          , lang_context => dbms_lob.default_lang_ctx
                          , warning      =>0);

последняя к меня обернута в процедуру и используется очень часто..
28 ноя 14, 10:38    [16917619]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
defecator
Member

Откуда:
Сообщений: 39394
Basil A. Sidorov
По логике (которая может быть ошибочной) установка charset-а соединения в UTF-8 должна решить вашу проблему.


Спасибо за консультацию, решил проблему:
dbms_output.put_line('Title: '||Convert(Title,'CL8MSWIN1251','UTF8')) ;

до этого делал то же самое, пока не открыл документацию,
и не узнал, что сначала идёт указание ВО ЧТО конвертить, а только потом - ИЗ ЧЕГО:
CONVERT(char , dest_char_set, source_char_set)

А я делал наоборот, и получал хрень ))))
28 ноя 14, 10:40    [16917639]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
vladimir74
Member

Откуда: Отсюда
Сообщений: 3613
Basil A. Sidorov,

я так понял у него база не в UTF8. Поэтому и надо конвертить...

PS: вообще в 21 веке надо призадуматься о переходе на формат позволяющий читать буковки на разных языках. Хотя потом начинается дембель как работать со всякими динозаврами которые досих пор работают в неизвестно какой кодировке.

И кстати неизвестно в какой - это самое противное :(
28 ноя 14, 10:44    [16917661]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
defecator
Member

Откуда:
Сообщений: 39394
vladimir74
Basil A. Sidorov,

я так понял у него база не в UTF8. Поэтому и надо конвертить...

PS: вообще в 21 веке надо призадуматься о переходе на формат позволяющий читать буковки на разных языках. Хотя потом начинается дембель как работать со всякими динозаврами которые досих пор работают в неизвестно какой кодировке.

И кстати неизвестно в какой - это самое противное :(


База не в UTF-8.
Конвертить придётся всё время, так как страницы в интернете в различных кодировках.
28 ноя 14, 10:49    [16917679]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование кодировки UTF-8 в AL16UTF8  [new]
vladimir74
Member

Откуда: Отсюда
Сообщений: 3613
defecator
База не в UTF-8.
Конвертить придётся всё время, так как страницы в интернете в различных кодировках.


ну сегодня все больше "страничек" летают в UTF8 хотя ты прав, конвертить придется всегда (или как минимум очень долго).

С другой стороны, не щная твою задачу, можно сказать что она сильно ограничена под русский контент (английский не в счет, этот "сорняк" везде есть ;) )
28 ноя 14, 11:03    [16917769]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить