Дали мне тут задачку простенькую: раз в N минут посмотреть в базу, и если там нашлись подходящие записи, вынуть из них пару полей и отослать по почте соответствующим людям. Ничего сложного. Казалось бы.
Набросал за пять минут скриптик, отослал себе письмо тестовое… Опс. Вместо символов валюты фигня какая-то. Вместо евро вопросики, вместо фунтов британских — решёточки. Ну, думаю, чего-то с кодировками в почте напутал. Включил в скрипте отладочную печать, ан нет, оказывается это оно прямо из базы такое приходит.
Иду к DBA, они запускают в своём TOAD’е тот же запрос, и.. у них всё нормально. Евро как евро, фунты как фунты. “А выставь у себя в скрипте явно NLS_CHARACTERSET”, — говорят они, и у тебя тоже будет всё нормально. “А какой?” — спрашиваю я. “А.. фиг его знает. Мы никогда не пробовали его менять, у нас и так всё работает.”
Ну ладно, пошёл, поставил UTF8. Там вроде ж все символы есть, должно работать.. Авотфиг. Евро появлись, а фунты почему-то показываются однобайтовым символом 0xA3. А должен быть U+C2A3.
Пошел гуглить. Нашёл, что в оракле кодировки называются не по-человечески, а чёрт знает как. Правильное название для UTF8 — AL32UTF8. Попробовал. Те же гениталии.
Ну ладно, не выходит с универсальной кодировкой, попробуем что-нибудь однобайтовое, где оба символа есть. ISO-8859-15. По-оракловому это WE8ISO8859P15. Э-э.. фиг: “connect failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME (Linux) env var or PATH (Windows) and or NLS settings, permissions, etc.” Не знает оно такой кодировки.
Пробую ISO-8859-1, в которой вообще-то евро нет, но вдруг.. С фунтом нормально, он 0xA3, а вместо евро выдают 0xBF, который ¿.
Испробовал ещё одну разновидность ISO-8859-1 под названием WE8ISOICLUK, UTF16 в лице AL16UTF16 и ещё какую-то UTFE. Нэту таких. “connect failed: ERROR OCIEnvNlsCreate …”
Чтоб этим индусам всю их поганую жизнь икалось.
После трёхчасовых проклятий в их адрес я таки подобрал одну кодировку, в которой видно и то, и другое. Поиск ответа оставляется интересующимся читателям в качестве домашнего задания.
Оригинал этой записи в личном блоге.
Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме.
no subject
>что на сервере обязаны быть иксы, а без них инсталлятор даже
>запускаться не собирается, у меня тоже много добрых слов >есть. Запускать его на машине, куда попасть можно только
Это да, за инсталлятор их надо жарить 5000 лет, особенно за картинки в бекграунде. Я раз в полгода ставлю оракл через ssh через спутник, это удовоьствие часа на 3-4. Но на самом деле у них сайлент инстляция, но там сложный файл ответов, и начиная с 10-го, в сайлент режиме уже не требуются X-ы. Ну и клиент вообще ставить не надо, есть instant для всех осей, это просто файлики.
> через два ssh, то ещё удовольствие. И от рута он,
>конечно, тоже не работает. Несекьюрно, типа.
Это кстати по просьбам трудящихся. В информиксовых форумах много лет просили сделать возможность работу инсталлятора не от рута.
>А после su x-forwarding, естественно, отваливается нафиг,
>даже если до того его удалось как-то пробросить.
после su недоступен меджик файл ~root/.Xauthority, наверно его можно копировать и выставить такой-же DISPLAY.