| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Perl, DBI, чтение кириллицы из базы Oracle 9i |
| Автор: RETROme 26.9.2008, 12:11 |
| Как правильно осуществить чтение русского текста из базы Oracle 9i с помощью DBI в Perl (5.8.0 версии)? |
| Автор: nitr 26.9.2008, 12:20 |
| RETROme, уточните вопрос, более детально опишите. В какой кодировке у вас БД? |
| Автор: RETROme 26.9.2008, 12:37 | ||
nitr, я так понимаю, универсального метода нет? Доступа к администрированию сервера с базой не имею, есть доступ только к самой базе. Исходная кодировка должна быть cp1251. Сейчас код примерно такой (собственно та часть, где идёт работа с базой):
|
| Автор: gcc 26.9.2008, 13:19 |
| база в какой кодировке? |
| Автор: RETROme 26.9.2008, 14:13 |
| gcc, |
| Автор: nitr 26.9.2008, 14:33 |
| RETROme, на выходе сделайте кодировку как у БД Если не скажут, то: у вас скорее всего БД в utf-8 кодировке, на выходе тоже utf-8 сделайте и проверьте - надеюсь угадаете. |
| Автор: RETROme 26.9.2008, 15:29 |
| nitr, буду верить, что с Вашей помощью код будет удачно дописан, так как это единственная загвоздка, на которую мне пришлось наткнуться. Спасибо ;) |
| Автор: ramus 27.9.2008, 21:48 | ||
Правильно утаивают Скажу крамольную мысль: для клиента Оракла не важно в какой кодировке БД. Важно сказать серверу в какой кодировке клиент хочет получить данные. Сервер все автоматически сам сконвертирует для каждого клиента. Насколько я помню за этот параметр на клиенте отвечает переменная окружения NLS_LANG (ораклового) она должна быть установлена что то типа (зависит от LANG на клиенте, но обычно так) для клиента виндовс NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 для клиента линукс NLS_LANG=AMERICAN_AMERICA.CL8KOI8R Хотя в DBI может быть по другому надо сообщать серверу о кодировке... это для стандартного ораклового клиента ... Попробуйте поменять, может поможет... код должен быть что то типа такого
Если оракловый клиент на виндах, то обычно эти переменные окружения берутся по умолчанию из реестра. Однако я столкнулся с тем, что для 10 клиента в реестре этих данных по умолчанию нет и надо для приложения их устанавливать самостоятельно. Более внимательно прочитал Ваш пост: У Вас знаки вопросов вместо русских букв? К сожалению Вы не указали какой клиент Виндовс или UNIX. Если UNIX (Linux) то возможно это связано с тем, что не настроен LOCALE. Проверьте, должно быть что то типа такого $ locale LANG=ru_RU.KOI8-R LC_CTYPE="ru_RU.KOI8-R" LC_COLLATE="ru_RU.KOI8-R" |
| Автор: nitr 28.9.2008, 02:19 | ||
| RETROme, если что - то тут были посты как указывать эту кодировку в Оракл - поиском можно попытаться найти. Добавлено через 5 минут и 12 секунд вот что дают результаты поиска:
и тут http://forum.vingrad.ru/forum/topic-229626/kw-dbd-oracle-class-ооп/hl/dbi++oracle/index.html P.S.: а нужно ли это... ;) |
| Автор: RETROme 28.9.2008, 08:24 |
| nitr, огромное спасибо за помощь! ramus, мммм |